by @skills-il
זיהוי תווים אופטי לטפסי ממשלה בעברית — טאבו, רשות המסים ועוד
npx skills-il add skills-il/localization --skill hebrew-ocr-forms| סוג טופס | מקור | מזהים עיקריים | שדות נפוצים |
|---|---|---|---|
| נסח טאבו | לשכת רישום מקרקעין | "נסח טאבו", "לשכת רישום המקרקעין" | גוש, חלקה, בעלים, שעבודים |
| טופס 106 | רשות המסים | "טופס 106", "דו״ח שנתי למעביד" | שכר, מס, מעביד |
| אישור ניכוי | רשות המסים | "אישור ניכוי מס במקור" | שיעור מס, תוקף, ת.ז. |
| טופס 857 | רשות המסים | "טופס 857", "רווח הון" | עסקה, רווח, מס |
| אישור זכאויות | ביטוח לאומי | "אישור זכאויות", "ביטוח לאומי" | סוג גמלה, סכום |
| טופס 100 | ביטוח לאומי | "טופס 100", "דין וחשבון" | עובדים, שכר |
| רישיון רכב | רישוי רכב | "רישיון רכב" | לוחית, בעלים, תוקף |
ראו scripts/preprocess_image.py לצנרת העיבוד המקדים המלאה. שלבים עיקריים:
ראו scripts/extract_form_fields.py לצנרת החילוץ המלאה.
הגדרות Tesseract לטפסים בעברית:
config = (
'--oem 1 ' # LSTM neural net (best for Hebrew)
'--psm 6 ' # Assume uniform block of text
'-l heb+eng ' # Hebrew + English (forms have both)
'-c preserve_interword_spaces=1' # Keep spacing for field alignment
)נסח טאבו — שדות עיקריים:
טופס מס (טופס 106) — שדות עיקריים:
import unicodedata
def normalize_bidi_text(text):
"""Normalize bidirectional text from Hebrew OCR output."""
lines = text.split('\n')
normalized = []
for line in lines:
# Strip bidi control characters
clean = ''.join(
c for c in line
if unicodedata.category(c) != 'Cf'
)
clean = ' '.join(clean.split())
if clean:
normalized.append(clean)
return '\n'.join(normalized)לאחר החילוץ, יש לאמת שדות מפתח:
המשתמש אומר: "חלץ נתונים ממסמך טאבו סרוק" תוצאה: עיבוד מקדים של התמונה, הרצת OCR בעברית, זיהוי כנסח טאבו, חילוץ שדות גוש/חלקה/בעלים/זכויות, אימות ת.ז., החזרת JSON מובנה.
המשתמש אומר: "יש לי 50 טפסי 106 סרוקים — חלץ נתוני שכר ומס" תוצאה: הקמת צנרת אצווה — עיבוד מקדים לכל תמונה, OCR בעברית+אנגלית, חילוץ שדות טופס 106, אימות, פלט ל-CSV/JSON עם ציוני ביטחון.
המשתמש אומר: "ה-OCR לא קורא את הטקסט בעברית נכון" תוצאה: אבחון עיבוד מקדים — בדיקת רזולוציית תמונה (מומלץ מינימום 300 DPI), אימות יישור, התאמת סף בינאריזציה, ניסיון מצבי PSM שונים, בדיקת התקנת חבילת השפה העברית.
scripts/preprocess_image.py — הכנת תמונות של טפסים ישראליים סרוקים ל-OCR: המרה לגווני אפור, יישור סריקות מסובבות, בינאריזציה מסתגלת לתאורה לא אחידה, הסרת רעש מורפולוגית, שיפור ניגודיות CLAHE אופציונלי, והסרת שוליים. הרצה: python scripts/preprocess_image.py --helpscripts/extract_form_fields.py — הרצת Tesseract OCR בעברית על תמונות טפסים מעובדות וחילוץ שדות מובנים לפי סוג טופס. תומך בזיהוי אוטומטי של טאבו, טופס 106 וטפסי ממשלה ישראליים נוספים. פלט JSON עם שדות שחולצו ואימות ת.ז. ישראלית. הרצה: python scripts/extract_form_fields.py --helpreferences/israeli-form-types.md — קטלוג מפורט של סוגי טפסים ממשלתיים ישראליים (טאבו/מקרקעין, טפסי רשות המסים, מסמכי ביטוח לאומי) עם תיאורי שדות, ביטויי regex לחילוץ, כללי אימות ת.ז., פורמטי תאריך/מטבע, וטיפים ל-OCR לפי פריסת טופס. יש לעיין בו בעת זיהוי טופס לא מוכר או בניית לוגיקת חילוץ שדות למסמך ספציפי.סיבה: קובץ traineddata בעברית לא מותקן
פתרון: התקנה עם sudo apt-get install tesseract-ocr-heb (Ubuntu) או brew install tesseract-lang (macOS). אימות עם tesseract --list-langs.
סיבה: בעיית סדר טקסט דו-כיווני
פתרון: שימוש בפונקציה normalize_bidi_text(). יש לוודא שה-Tesseract משתמש ב---oem 1 (מצב LSTM). בדיקה שהתמונה לא מראתית.
סיבה: איכות סריקה ירודה, חותמות/חתימות חופפות לטקסט, רקעים צבעוניים פתרון: הגברת עיבוד מקדים — יישום הסרת רעש חזקה יותר, חיתוך לאזורים ספציפיים בטופס, שימוש בחילוץ מבוסס ROI לפריסות טפסים מוכרות.
סוכנים נתמכים
ציון אמון
ניתוח אוטומטי: זוהו 1 גורמי סיכון (הרצת סקריפטים). הרשאות: 55/100, טיפול בנתונים: 100/100.
נבדק על ידי: skills-il-sync-v1
by @skills-il
כתיבה ועריכה של תוכן מקצועי בעברית תקנית ושוטפת
by @skills-il
תזמון משימות תוך התחשבות בשבתות, חגים ולוח השנה העברי
by @skills-il
הנחיות ותבניות ליצירת ממשקים עבריים עם תמיכה מלאה בכתיבה מימין לשמאל