school

תוכן בלעדי לחברים רשומים

הצטרפו בחינם לאקדמיה

התחבר / הירשם בחינם
school

אינטליגנציה של מסמכים

עיבוד וניתוח חכם של מסמכים באמצעות AI

clock 8 שעות
trending_up כל הרמות
verified תעודה בסיום

check_circle מה תלמדו בקורס?

verified_user הבנת טכנולוגיות OCR וזיהוי תווים
verified_user ניהול תהליכי אוטומציה של מסמכים
verified_user שימוש ב-AI לחילוץ נתונים מדויק
verified_user יישום פתרונות של אינטליגנציה מסמכים בעסק
1

מבוא לאינטליגנציה של מסמכים

45 דקות

שיעורים בחלק זה:

  • play_circle

    מה היא אינטליגנציה של מסמכים

    היכרות עם הקונספט הבסיסי של Document Intelligence וחשיבותה בעולם הדיגיטלי המודרני

  • play_circle

    יישומים ותרחישים עסקיים

    דוגמאות מעשיות של כיצד ארגונים משתמשים בטכנולוגיה זו לשיפור תהליכים

  • play_circle

    טכנולוגיות עדכניות בתחום

    סקירת הכלים המובילים בשוק - Azure Document Intelligence, Google Document AI ועוד

תוכן מעמיק

אינטליגנציה של מסמכים (Document Intelligence) היא תחום מהפכני המשלב בין טכנולוגיות OCR (Optical Character Recognition) ו-AI מתקדם. במודול זה נחקור את היסודות של תחום זה ונבין כיצד הוא משנה את דרך ניהול המסמכים בעסקים.

הבעיה המקורית: לעשרות שנים, עיבוד מסמכים היה תהליך ידני שגוזל זמן. טופסים, חשבוניות, חוזים וביצוע מסמכים דרשו יד אדם לקריאה, הבנה וחילוץ מידע. זה היה בקבוק צוואר משמעותי בכל ארגון גדול.

💡 טיפ מקצועי

Document Intelligence לא עוד רק קריאת טקסט - זו הבנה של ההקשר, המשמעות והקשרים בין מידע בתוך מסמך

הפתרון המודרני: בעזרת Machine Learning וטכנולוגיות ראייה מחשב, אנחנו יכולים כעת לאוטומט את כל התהליך הזה. המערכת יכולה לא רק לקרוא טקסט, אלא גם להבין את המבנה, לזהות טבלאות, להפקיד חתימות ולחלץ מידע חכם ממסמכים מורכבים.

דוגמה: עיבוד חשבוניות
Input: קובץ PDF של חשבונית סופר ↓ 1. זיהוי סוג המסמך (חשבונית) 2. אבחון הגבולות של האזורים החשובים 3. חילוץ: שם ספק, מספר הזמנה, סכום כולל 4. אימות נתונים 5. העברה למערכת ממיטה Output: נתונים מובנים, מוכן לעיבוד אוטומטי

תהליך זה שלעבר דרש שעות של עבודה ידנית, כעת יכול להתבצע בשניות עם דיוק של 99%+

יישומים עסקיים חוקיים
  • בנקים וביטוח: עיבוד בקשות הלוואה, אישור דוקומנטים
  • משפטי: ניתוח חוזים, חילוץ תנאים חשובים
  • בריאות: עיבוד רשימות רפואיות, תביעות保険
  • קמעונאות: ניהול שרשרת אספקה וקבלות
  • משאבי אנוש: עיבוד קורות חיים, בדיקת מסמכים

שאלה לחשיבה: באיזה תהליך בחברתך היה יכול להיות יישום של Document Intelligence?

2

טכנולוגיות OCR וזיהוי

60 דקות

שיעורים בחלק זה:

  • play_circle

    עיקרונות ה-OCR

    הבנה עמוקה של כיצד מערכות ממירות תמונות טקסט לנתונים דיגיטליים

  • play_circle

    זיהוי טקסט ודמויות

    טכניקות חדישות לזיהוי כתב יד, דמויות מיוחדות וטקסט בזוויות שונות

  • play_circle

    טיפול בתמונות וקבצים שונים

    עבודה עם JPEG, PNG, PDF, סריקות ברזולוציות שונות

תוכן מעמיק

OCR (Optical Character Recognition) היא הטכנולוגיה הבסיסית המאפשרת מחשבים לקרוא טקסט מתמונות. אבל זה הרבה יותר מורכב ממה שנראה בהתחלה.

שלבי התהליך ב-OCR מודרני

שלב 1: עיבוד תמונה ראשוני (Preprocessing)

הסרת רעש, התאמת ניגודיות, תיקון סיבוב, שיפור איכות התמונה

שלב 2: פילוח מרחבי (Segmentation)

חלוקת התמונה לאזורים לוגיים - אזור כותרת, גוף טקסט, טבלאות, אזור חתימה

שלב 3: זיהוי תו (Character Recognition)

שימוש בNeuron Networks עמוקות לזיהוי כל תו בנפרד

שלב 4: תיקון שגיאות (Post-Processing)

השוואה מול מילון, תיקון שגיאות, זיהוי בעיות יודע

⚡ ידע חיוני

OCR מודרני משתמש ב-Deep Learning Networks (CNN + RNN) שמאומנים על מיליוני תמונות. דיוק יכול להגיע ל-99.9% למסמכים בעלי איכות טובה

סוגי תמונות ואתגרים

📄 סריקות בשחור לבן (בעיה: איכות נמוכה)

פתרון: אלגוריתמים של שיפור דינמי של ניגודיות ותיקון תווים שקרועים

🖼️ תמונות צבעוניות (בעיה: רקע מורכב)

פתרון: הפרדה של טקסט מרקע, מסנני צבע מתאימים

✍️ כתב יד (בעיה: השתנות גדולה בין אנשים)

פתרון: מודלים מיוחדים מאומנים על כתב יד, דיוק נמוך יותר (70-80%)

📋 טבלאות מורכבות (בעיה: זיהוי המבנה)

פתרון: זיהוי קווים, הבנת הקשרים בין תאים, שמירת מבנה הנתונים

דוגמה קוד: עיבוד בסיסי של תמונה
import pytesseract from PIL import Image, ImageEnhance, ImageFilter # טעינת תמונה img = Image.open('document.png') # שלב preprocessing enhancer = ImageEnhance.Contrast(img) img = enhancer.enhance(2) # הגברת ניגודיות img = img.filter(ImageFilter.SHARPEN) # חידוד # חילוץ טקסט עם OCR text = pytesseract.image_to_string(img, lang='heb') print(text)
השוואה בין כלים עיקריים
כלי דיוק OCR זיהוי טבלאות תמיכה בעברית
Google Vision API 98%+ ✅ מעולה ✅ כן
Azure Document Intelligence 99%+ ✅ מעולה ✅ כן
Tesseract (Open Source) 85-95% ⚠️ בסיסי ✅ כן
3

עיבוד וניתוח נתונים

60 דקות

שיעורים בחלק זה:

  • play_circle

    חילוץ מידע מובנה

    הפיכת טקסט חופשי לנתונים מובנים ומסודרים

  • play_circle

    ניקיון וטיהור נתונים

    טכניקות להסרת שגיאות, כפילויות ודאטה שגויה

  • play_circle

    זיהוי דפוסים וקטגוריות

    שימוש בטכניקות ML לסיווג ממתיקה של מסמכים והמידע בתוכם

תוכן מעמיק

לאחר שהחילצנו טקסט מהתמונה, עלינו להפוך אותו לנתונים ממובנים וישימים. זוהי אחת ההנדסה החשובה ביותר בתהליך, שכן נתונים גרוע יוביל לתוצאות גרוע.

שלבי עיבוד הנתונים

1️⃣ שלב טנטוריות (Tokenization)

פיצול הטקסט לטוקנים בודדים (מילים, מספרים, סימנים)

2️⃣ זיהוי גופים (Named Entity Recognition - NER)

זיהוי אנשים, חברות, תאריכים, סכומים כסף, מיקומים וכו'

3️⃣ נורמליזציה (Normalization)

התאמת פורמט - הסרת רווחים עודפים, יישור תאריכים לפורמט אחד

4️⃣ לינקונג (Linking)

חיבור מידע ממופות שונות של המסמך למסד נתונים קיים

דוגמה: עיבוד טקסט מחשבונית
# נתונים גולמיים מ-OCR raw_text = """ חברת תקווה בע"מ ת.ז. 123456789 תאריך: 15/04/2024 סכום: 1,250.50 ש"ח אחוז מס: 17% סכום מס: 212.59 ש"ח סה"כ לתשלום: 1,463.09 """ # שלב 1: Tokenization ו-NER import spacy nlp = spacy.load('he_core_news_sm') doc = nlp(raw_text) # שלב 2: חילוץ ישויות for ent in doc.ents: print(f"{ent.text}: {ent.label_}") # שלב 3: חילוץ שדות ספציפיים import re date = re.search(rr'(\d{1,2}/\d{1,2}/\d{4})', raw_text).group(1) amount = re.search(rr'סכום:\s*([\d.,]+)', raw_text).group(1) # שלב 4: נורמליזציה amount = amount.replace(',', '').replace('.', ',') # לפורמט עברי date_obj = datetime.strptime(date, "%d/%m/%Y") structured_data = { "company": "תקווה בע\"מ", "date": date_obj.isoformat(), "amount": float(amount.replace(',', '.')), "currency": "ILS" }
טיהור נתונים - בעיות נפוצות ופתרונות

❌ בעיה: כפילויות

דוגמה: אותו מספר הזמנה מופיע פעמיים בטבלה

✅ פתרון: השוואה hashless של שדות, זיהוי דפוסים חוזרים

❌ בעיה: פורמטים לא עקביים

דוגמה: תאריך כתוב כ- "15/4/24" או "2024-04-15" או "15 באפריל"

✅ פתרון: Regex patterns ו-date parsing libraries

❌ בעיה: ערכים חסרים

דוגמה: שדה חובה כמו מחיר אינו קיים בקו מסוים

✅ פתרון: Rule-based imputation, inference models או דגלול הנתון

🎯 חומר לחשיבה

באופן סטטיסטי, 80% מהזמן בפרויקטי Data ב-AI מושקע בטיהור ועיבוד נתונים. זו לא עבודה סקסית, אבל היא קריטית!

4

יישומים מעשיים ואוטומציה

45 דקות

שיעורים בחלק זה:

  • play_circle

    אוטומציה של תהליכי עסק

    איך לשלב Document Intelligence ב-RPA וWorkflow Automation

  • play_circle

    אינטגרציה עם מערכות קיימות

    חיבור ל-ERP, CRM, מערכות ניהול מסמכים

  • play_circle

    פרויקט סיום — מערכת עיבוד מסמכים

    בנייה מלאה של pipeline לעיבוד חשבוניות ב-production

5

פרויקט מסכם — בניית Pipeline מלא לעיבוד מסמכים

90 דקות

שיעורים בחלק זה:

  • play_circle

    תכנון ארכיטקטורת הפרויקט

    הגדרת דרישות, תכנון רכיבים ובחירת הטכנולוגיות המתאימות ל-pipeline מקצה לקצה

  • play_circle

    יישום שלב אחר שלב

    קידוד ובדיקת כל שכבה — קלט PDF, OCR, חילוץ נתונים, ולידציה ושמירה למסד נתונים

  • play_circle

    בדיקות ופרסום לייצור

    כתיבת בדיקות יחידה, טיפול בשגיאות, לוגים ו-Deployment לסביבת Production

תוכן מעמיק

בפרויקט המסכם נאחד את כל מה שלמדנו לכדי מערכת עובדת ומלאה. נבנה Pipeline אמיתי שמקבל קובץ PDF כקלט, מעביר אותו דרך שכבות OCR וחילוץ נתונים, מבצע ולידציה ומפיק פלט מובנה למסד נתונים.

ארכיטקטורת ה-Pipeline: המערכת שנבנה תפעל לפי עקרון "קלט אחד, פלט נקי" — כל שלב בשרשרת אחראי על משימה אחת בלבד, ומעביר נתון ברור לשלב הבא. גישה מודולרית זו מקלה על ניפוי שגיאות ועל שדרוגים עתידיים.

סכמת ה-Pipeline המלאה
# document_pipeline.py — Pipeline מלא לעיבוד מסמכים import fitz # PyMuPDF — פתיחת PDF import pytesseract from PIL import Image, ImageEnhance import openai import json, re, logging from datetime import datetime import psycopg2 # חיבור ל-PostgreSQL logging.basicConfig(level=logging.INFO) logger = logging.getLogger("doc_pipeline") # ---- שלב 1: קלט PDF ---- # def pdf_to_images(pdf_path: str) -> list: """ממיר PDF לרשימת תמונות PIL""" doc = fitz.open(pdf_path) images = [] for page in doc: pix = page.get_pixmap(dpi=300) img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples) images.append(img) logger.info(f"נטענו {len(images)} עמודים מ-{pdf_path}") return images # ---- שלב 2: OCR ---- # def run_ocr(images: list) -> str: """מריץ OCR על רשימת תמונות ומחזיר טקסט מאוחד""" full_text = [] for i, img in enumerate(images): enhancer = ImageEnhance.Contrast(img) img = enhancer.enhance(1.8) page_text = pytesseract.image_to_string(img, lang='heb+eng') full_text.append(page_text) logger.info(f"OCR הושלם לעמוד {i+1}") return "\n\n".join(full_text) # ---- שלב 3: חילוץ נתונים עם AI ---- # def extract_fields(raw_text: str) -> dict: """שולח טקסט ל-GPT-4o ומחזיר JSON מובנה""" client = openai.OpenAI() prompt = f"""חלץ מהטקסט הבא את השדות הבאים בפורמט JSON בלבד: supplier_name, invoice_number, date (ISO 8601), total_amount (מספר), currency טקסט: {raw_text}""" response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": prompt}], response_format={"type": "json_object"} ) return json.loads(response.choices[0].message.content) # ---- שלב 4: ולידציה ---- # def validate(data: dict) -> dict: """בודק שכל שדות החובה קיימים ותקינים""" required = ["supplier_name", "invoice_number", "date", "total_amount"] for field in required: if not data.get(field): raise ValueError(f"שדה חסר: {field}") data["total_amount"] = float(str(data["total_amount"]).replace(",", ".")) datetime.fromisoformat(data["date"]) # מוודא פורמט תאריך תקני return data # ---- שלב 5: שמירה למסד נתונים ---- # def save_to_db(data: dict, conn) -> None: """שומר את הנתונים המובנים ל-PostgreSQL""" with conn.cursor() as cur: cur.execute(""" INSERT INTO invoices (supplier_name, invoice_number, date, total_amount, currency) VALUES (%s, %s, %s, %s, %s) ON CONFLICT (invoice_number) DO NOTHING """, (data["supplier_name"], data["invoice_number"], data["date"], data["total_amount"], data.get("currency", "ILS"))) conn.commit() logger.info(f"חשבונית {data['invoice_number']} נשמרה בהצלחה") # ---- הפעלת ה-Pipeline ---- # def run_pipeline(pdf_path: str, db_conn) -> dict: logger.info(f"מתחיל עיבוד: {pdf_path}") images = pdf_to_images(pdf_path) raw_text = run_ocr(images) fields = extract_fields(raw_text) clean = validate(fields) save_to_db(clean, db_conn) logger.info("Pipeline הסתיים בהצלחה") return clean # הפעלה ישירה if __name__ == "__main__": conn = psycopg2.connect("postgresql://user:pass@localhost/docs_db") result = run_pipeline("invoice_sample.pdf", conn) print(json.dumps(result, ensure_ascii=False, indent=2))

שיטות עבודה מומלצות ל-Production

  • לוגים בכל שלב — תמיד תעדו את קלט ופלט כל פונקציה. כשמשהו נשבר ב-Production, הלוגים הם ההבדל בין שעה לשעיים של דיבאג.
  • טיפול בשגיאות מפורש — עטפו כל קריאה חיצונית (OCR API, OpenAI, DB) ב-try/except עם הודעות שגיאה ברורות בעברית.
  • Idempotency — השתמשו ב-ON CONFLICT DO NOTHING או בבדיקת כפילויות לפני כתיבה, כך שהפעלה כפולה של ה-Pipeline לא תיצור רשומות כפולות.
  • בדיקות יחידה — כתבו test לכל פונקציה בנפרד עם קבצי PDF לדוגמה. Pipeline שלם קשה לבדוק; פונקציות בודדות — קל.
  • ניטור ועלויות — עקבו אחר כמות הקריאות ל-GPT-4o ועלותן. שקלו cache של תוצאות ל-PDFs זהים לפי hash.
בדיקות ופרסום לייצור

לפני שמעלים את ה-Pipeline ל-Production, חשוב לוודא שלושה דברים: ראשית, שהמערכת מטפלת נכון ב-PDFs פגומים או ריקים מבלי לקרוס. שנית, שזמני העיבוד עומדים בדרישות העסקיות (בדרך כלל מתחת ל-30 שניות לדף). שלישית, שהנתונים שנשמרים תואמים את הסכמה של מסד הנתונים ואינם גורמים לשגיאות constraint.

לאחר Deployment, הגדירו ניטור אוטומטי (Prometheus, Datadog, או פשוט email alerts) שיתריע כשיחס השגיאות עולה מעל 5%, או כשעלות ה-API היומית חורגת מהתקציב שהגדרתם.

emoji_events

מזל טוב — סיימתם את הקורס!

השלמתם את כל 5 המודולים של אינטליגנציה של מסמכים. יש לכם כעת את הידע לבנות Pipeline מקצה לקצה שמקבל PDF, מחלץ נתונים בדיוק גבוה, ומפיק פלט מובנה לכל מערכת עסקית. הפרויקט המסכם שכתבתם הוא נקודת הפתיחה לפתרונות Document Intelligence אמיתיים בסביבת Production.