רוצה לבצע אוטומציה של חילוץ נתונים מקבלות? בדוק את ההכשרה המוקדמת של Nanonets OCR קבלה or בנה אחד משלך OCR קבלה מותאם אישית. אתה יכול גם קבע הדגמה כדי ללמוד עוד על מקרי השימוש שלנו ב-AP!
OCR קבלה או דיגיטציה של קבלות נותנת מענה לאתגר של חילוץ אוטומטי של מידע מקבלה. במאמר זה, אני מכסה את התיאוריה מאחורי דיגיטציה של קבלות ומיישם צינור מקצה לקצה באמצעות OpenCV ו טסרקט. אני גם סוקר כמה מאמרים חשובים שעושים דיגיטציה של קבלות באמצעות למידה עמוקה.
מהי דיגיטציה של קבלה?
התקבולים נושאים את המידע הדרוש לסחר שיתרחש בין חברות וחלק גדול ממנו נמצא על נייר או בפורמטים מובנים למחצה כמו קובצי PDF ותמונות של נייר / עותקים קשיחים. על מנת לנהל מידע זה בצורה יעילה, חברות מחלצות ומאחסנות את המידע הרלוונטי הכלול במסמכים אלה. באופן מסורתי, הדבר הושג על ידי חילוץ ידני של המידע הרלוונטי והכנסתו למסד נתונים שהוא תהליך עתיר עבודה ויקר.
דיגיטציה של קבלה מטפלת באתגר של חילוץ אוטומטי של מידע מתוך קבלה.
חילוץ מידע מרכזי מתקבלות והמרתם למסמכים מובנים יכול לשרת יישומים ושירותים רבים, כגון ארכיון יעיל, אינדקס מהיר וניתוח מסמכים. הם ממלאים תפקידים קריטיים בייעול תהליכים עתירי מסמכים ואוטומציה של משרדים בתחומים פיננסיים רבים, חשבונאיים ומיסוי.
צריך חזק קבלת OCR or סורק קבלות להוציא נתונים מקבלות? בדוק את Nanonets קבלה OCR API!
מי ימצא את הדיגיטציה של הקבלה מועילה?
להלן מספר תחומים שבהם דיגיטציה של קבלה יכולה להשפיע רבות:
חשבונות חייבים ואוטומציה חייבים
חישוב חשבונות חייבים (AP) וחשבונות חייבים (AR) באופן ידני הוא יקר, גוזל זמן ויכול להביא לבלבול בין מנהלים, לקוחות וספקים. בעזרת דיגיטציה, חברות יכולות לחסל את החסרונות הללו ויכולות להיות בעלות יתרונות רבים יותר - שקיפות מוגברת, נתונים אנליטיים, שיפור הון חוזר ומעקב קל יותר.
מיטוב שרשרת האספקה
שרשראות האספקה הן עמוד השדרה של תפקוד תקין של חברות רבות. ניהול משימות, זרימת מידע וזרימות מוצרים הוא המפתח להבטיח שליטה מלאה באספקה ובייצור. זה חיוני אם ארגונים עומדים בזמני אספקה ולשלוט בעלויות הייצור.
לחברות שמשגשגות באמת בימינו יש משהו משמעותי במשותף: שרשרת אספקה דיגיטאלית. 89% מהחברות עם שרשראות אספקה דיגיטליות מקבלים הזמנות מושלמות מספקים בינלאומיים, מה שמבטיח אספקה בזמן. אחד המרכיבים המרכזיים במימוש הדור הבא של שרשרת האספקה הדיגיטלית 4.0, הוא אוטומציה של לכידה וניהול נתונים והרבה מהנתונים האלה הם צורת קבלות ו חשבוניות. הזנה ידנית של קבלות פועלת כצוואר בקבוק לאורך שרשרת האספקה ומובילה לעיכובים מיותרים. אם עיבוד הקבלה הזה יעבור דיגיטציה זה יכול להוביל לרווחים משמעותיים בזמן וביעילות.
האם יש לך בעיה עם OCR? רוצה לעשות דיגיטציה חשבוניות, קובצי PDF או לוחיות מספר? ראש אל ננונטים ובנו דגמי OCR בחינם!
מדוע זו בעיה קשה?
הדיגיטציה של הקבלה קשה מכיוון שלקבלות יש שינויים רבים ולעיתים באיכות נמוכה. קבלות סריקה מכניסות גם כמה חפצים לעותק הדיגיטלי שלנו. חפצים אלה מציבים אתגרים רבים לקריאות.
להלן רשימה של כמה דברים שהופכים את הבעיה לקשה לפיצוח
- טקסט כתוב בכתב יד
- גופנים קטנים
- תמונות רועשות
- תמונות דהויות
- תנועה ומצלמה של המצלמה
- סימוני מים
- קמטים
- טקסט דהוי
צינור דיגיטציה לקבלה מסורתית
צינור אופייני לגישה מסוג זה מקצה לקצה כוללת:
- עיבוד מוקדם
- זיהוי תווים אופטי
- הפקת מידע
- Dump נתונים
בואו נצלול עמוק יותר בכל חלק מהצינור. השלב הראשון בתהליך הוא עיבוד מוקדם.
עיבוד מוקדם
מרבית הקבלות שנסרקו רועשות ויש בהן חפצים, וכדי שמערכות ה- OCR ומיצוי המידע יעבדו היטב, יש צורך לעבד את התקבולים מראש. שיטות עיבוד מקדימות נפוצות כוללות - סולם אפור, סף (בינאריזציה) והסרת רעשים.
גווני אפור הם פשוט המרת תמונה RGB לתמונה בגווני אפור.
בדרך כלל הסרת רעש כוללת הסרת רעשי מלח ופלפל או רעש גאוסי.
רוב מנועי ה- OCR עובדים היטב בתמונות בשחור-לבן. ניתן להשיג זאת באמצעות סף, שהוא הקצאת ערכי פיקסל ביחס לערך הסף הניתן. כל ערך פיקסל מושווה לערך הסף. אם ערך הפיקסלים קטן מהסף, הוא מוגדר ל- 0, אחרת הוא מוגדר לערך מקסימלי (בדרך כלל 255).
OpenCV מספק אפשרויות סף שונות - סף פשוט, סף אדפטיבי
זיהוי תווים אופטי
השלב הבא בצנרת הוא OCR. הוא משמש לקריאת טקסט מתמונות כמו מסמך סרוק או תמונה. טכנולוגיה זו משמשת להמרה, כמעט מכל סוג של תמונות המכילות טקסט כתוב (שהוקלדו, נכתב בכתב יד או מודפס) לנתוני טקסט הקריאים במכונה. OCR כולל שני שלבים - זיהוי טקסט וזיהוי טקסט.
ישנן מספר גישות ל- OCR. הגישה המקובלת לראיית מחשב היא
- שימוש בפילטרים כדי להפריד בין הדמויות לרקע
- החל זיהוי מתאר כדי לזהות את התווים המסוננים
- השתמש בסיווג mage כדי לזהות את הדמויות
החלת פילטרים וסיווג תמונות היא די פשוטה, (תחשבי סיווג MNIST באמצעות SVN), אך התאמת קווי המתאר היא בעיה קשה מאוד ודורשת מאמץ ידני רב ולא ניתן להכללה.
לאחר מכן מגיעים גישות הלמידה העמוקה. למידה עמוקה מכלילה היטב. אחת הגישות הפופולריות ביותר לזיהוי טקסטים היא EAST. EAST (גלאי טקסט סצנה יעיל ומדויק) הוא גישה פשוטה אך חזקה לזיהוי טקסט. רשת EAST היא למעשה גרסה של ה- U-Net הידוע, וזה טוב לאיתור תכונות בגדלים שונים.
CRNN ו STN-OCR (רשתות שנאי מרחבי) הם מאמרים פופולריים אחרים המבצעים OCR.
הפקת מידע
הגישה הנפוצה ביותר לבעיית חילוץ מידע היא מבוססת כללים, כאשר כללים נכתבים לאחר OCR כדי לחלץ את המידע הנדרש. זוהי גישה עוצמתית ומדויקת, אך היא מחייבת לכתוב כללים או תבניות חדשים לסוג חדש של מסמך.
כמה מבוססי כללים חשבונית מערכות ניתוח קיימות בספרות.
- אינטליקס מאת DocuWare דורש תבנית עם הערות בשדות רלוונטיים.
- SmartFix משתמש בכללי תצורה שעוצבו במיוחד עבור כל תבנית
השיטות מבוססות הכללים מסתמכות מאוד על כללי התבנית שהוגדרו מראש כדי לחלץ מידע מפרישות חשבוניות ספציפיות
גישה אחת שהפכה נפוצה מאוד בשנים האחרונות היא להשתמש במסגרת זיהוי אובייקטים סטנדרטית כמו YOLO, מהיר יותר R-CNN כדי לזהות שדות. אז במקום זיהוי טקסט טהור, זיהוי שדה וזיהוי טקסט מבוצעים בו זמנית. זה הופך את הצינור לקטן יותר (זיהוי טקסט → זיהוי → חילוץ לגילוי → זיהוי). אין צורך לכתוב כללים כלשהם מכיוון שגלאי האובייקטים לומד לזהות שדות אלה.
מזבלה של נתונים
לאחר שמוצא את המידע שלך, ניתן לבצע את זריקת הנתונים כפי שדורש מקרה השימוש שלנו. לעתים קרובות פורמט JSON לאחסון מידע השדות נוח. ניתן להמיר בקלות קבצי JSON לקבצי XML, גיליונות Excel, קבצי CSV או קבצי טקסט פשוטים תלוי מי רוצה לעבוד עם הנתונים ואיך.
דיגיטציה של קבלות באמצעות טסרקט
עכשיו כשיש לנו מושג על הצינור, בואו ליישם אותו בתעודת דוגמה. זו הקבלה שעבודה איתה. מטרתנו בסוף זה לחלץ את שם המסעדה, פריטים שנרכשו בכמותם ועלותם, תאריך הרכישה והסכום הכללי.
עיבוד מוקדם
מכיוון שהקבלה שלנו כבר נמצאת בגווני אפור ואין הרבה רעש, אני רק אעשה סף על ידי החלת סף של 210. אתה יכול לשנות את הערך כדי לקבל את הפלט הנכון. פחות מדי ותפספסו הרבה. קרוב מדי ל 255 יהפוך הכל לשחור.
נצטרך להתקין את OpenCV תחילה.
pip install opencv-python
להלן הקוד לסף.
import cv2
import numpy as np
from matplotlib import pyplot as plt # Read the image
img = cv2.imread('receipt.jpg',0)
# Simple thresholding
ret,thresh1 = cv2.threshold(img,210,255,cv2.THRESH_BINARY)
cv2.imshow(thresh1,’gray’)
כך נראה הפלט.
זיהוי טקסט
לצורך איתור טקסט אשתמש בספריית קוד פתוח בשם טסרקט. זוהי ספריית ה- OCR הסופית והיא פותחה על ידי גוגל מאז 2006. המהדורה האחרונה של Tesseract (v4) תומכת ב- OCR מבוסס למידה עמוקה, המדויקת באופן משמעותי יותר. מנוע ה- OCR הבסיסי עצמו עושה שימוש ברשת זיכרון ארוך טווח (LSTM).
ראשית, בואו נתקין את הגרסה האחרונה של Tesseract.
לאובונטו
sudo apt install tesseract-ocr
עבור macOS
brew install tesseract --HEAD
עבור Windows, אתה יכול להוריד את הקבצים הבינאריים מכך עמוד
אמת את גרסתך הקטנה.
tesseract -v
תפוקה -
tesseract 4.0.0-beta.3
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
Found AVX512BW
Found AVX512F
Found AVX2
Found AVX
Found SSE
התקן את הכריכות שלך Tesseract + Python
כעת, לאחר שהותקנו בו הבינארי של Tesseract, כעת עלינו להתקין את הכריכות של Tesseract + Python כך שתסקרי הפיתון שלנו יוכלו לתקשר עם Tesseract. עלינו להתקין את חבילת השפה הגרמנית מאחר והקבלה בגרמנית.
pip install pytesseract
sudo apt-get install tesseract-ocr-deu
כעת, לאחר שהתקנו את Tesseract, בואו נתחיל לזהות את תיבות הטקסט.טסרקט יש פונקציונליות מובנית לזיהוי תיבות טקסט.
import pytesseract
from pytesseract import Output
import cv2 img = cv2.imread('receipt.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imshow(img,'img')
להלן פלט קוד זיהוי הטקסט.
זיהוי טקסט
אנו מבצעים את Tesseract לביצוע OCR. Tesseract 4 משתמש בגישה למידה עמוקה שביצועיה טובים באופן משמעותי ממרבית יישומי הקוד הפתוח האחרים.
להלן הקוד של זיהוי טקסט. למרות שזה אניה פשוטה מאוד, יש הרבה שנמצא מתחת למכסה המנוע.
extracted_text = pytesseract.image_to_string(img, lang = 'deu')
להלן התפוקה הגולמית.
'BerghotelnGrosse Scheideggn3818 GrindelwaldnFamilie R.MüllernnRech.Nr. 4572 30.07.2007/13:29: 17nBar Tisch 7/01n2xLatte Macchiato &ä 4.50 CHF 9,00n1xGloki a 5.00 CH 5.00n1xSchweinschnitzel ä 22.00 CHF 22.00nIxChässpätz 1 a 18.50 CHF 18.50nnTotal: CHF 54.50nnIncl. 7.6% MwSt 54.50 CHF: 3.85nnEntspricht in Euro 36.33 EURnEs bediente Sie: UrsulannMwSt Nr. : 430 234nTel.: 033 853 67 16nFax.: 033 853 67 19nE-mail: grossescheidegs@b luewin. ch'
להלן הפלט המעוצב
Berghotel
Grosse Scheidegg
3818 Grindelwald
Familie R.Müller Rech.Nr. 4572 30.07.2007/13:29: 17
Bar Tisch 7/01
2xLatte Macchiato &ä 4.50 CHF 9,00
1xGloki a 5.00 CH 5.00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50 Total: CHF 54.50 Incl. 7.6% MwSt 54.50 CHF: 3.85 Entspricht in Euro 36.33 EUR
Es bediente Sie: Ursula MwSt Nr. : 430 234
Tel.: 033 853 67 16
Fax.: 033 853 67 19
E-mail: grossescheidegs@b luewin. ch
צריך לבצע דיגיטציה של מסמכים, קבלות או חשבוניות אבל עצלן מכדי לקודד? ראש אל ננונטים ובנו דגמי OCR בחינם!
הפקת מידע
כפי שציינתי בעבר הדרך הנפוצה ביותר לחילוץ מידע היא בגישה מבוססת כללים.
כל הקבלות ממלון זה יפעלו למבנה קבוע והמידע מופיע בשורות שונות. זה בא לידי ביטוי בתפוקת ה- OCR בה קוים חדשים מיוצגים על ידי 'n'. בעזרת אלה בואו נכתב מערך כללים לחילוץ מידע. ניתן להחיל את מערך הכללים הזה על כל קבלה ממלון זה מכיוון שהם יבצעו באותה פורמט.
אקח את שם המסעדה, תאריך העסקה, הפריטים שנקנו, הכמות שלהם, העלות הכוללת לפריט והסכום הכולל באמצעות פקודות פיתון פשוטות וביטויים רגילים.
זהו מילון שאחסן בו את המידע שחולץ.
receipt _ocr = {}
השלב הראשון הוא חילוץ שם המסעדה. המיקום של שם המסעדה הולך להיות קבוע בכל הקבלות וזה בשתי השורות הראשונות. בואו נשתמש בזה כדי ליצור כלל.
splits = extracted_text.splitlines()
restaurant_name = splits[0] + '' + splits[1]
בשלב הבא אנו מחלצים את תאריך העסקה. Regex תאריך די פשוט.
import re
# regex for date. The pattern in the receipt is in 30.07.2007 in DD:MM:YYYY date_pattern = r'(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)dd'
date = re.search(date_pattern, extracted_text).group()
receipt_ocr['date'] = date
print(date)
תפוקה -
‘30.10.2007’
בשלב הבא אנו מחלצים את כל המידע הקשור לפריטים והעלות.
הפריטים מכילים CHF שהוא הפרנק השוויצרי. בואו לזהות את כל ההתרחשויות של CHF. כעת אנו יכולים לזהות קווים על ידי זיהוי התווים בין 2 n ומכילים CHF. גם כאן אני מזהה את הסכום.
# get lines with chf
lines_with_chf = []
for line in splits: if re.search(r'CHF',line): lines_with_chf.append(line) print(lines_with_chf)
תפוקה -
2xLatte Macchiato &ä 4.50 CHF 9,00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50
Total: CHF 54.50
Incl. 7.6% MwSt 54.50 CHF: 3.85
אם שמתם לב, Tesseract החמיץ פריט אחד מכיוון שהוא זיהה CH במקום CHF. אתאר אתגרים במערכות OCR מסורתיות בסעיף הבא.
# get items, total, ignore Incl
items = []
for line in lines_with_chf: print(line) if re.search(r'Incl',line): continue if re.search(r'Total', line): total = line else: items.append(line) # Get Name, quantity and cost all_items = {}
for item in items: details = item.split() quantity_name = details[0] quantity = quantity_name.split('x')[0] name = quantity_name.split('x')[1] cost = details[-1] all_items[name] = {'quantity':quantity, 'cost':cost} total = total.split('CHF')[-1] # Store the results in the dict
receipt_ocr['items'] = all_items
receipt_ocr[‘total’] = total import json receipt_json = json.dumps(receipt_ocr)
print(receipt_json)
הדפסת פלט JSON שלנו -
{'date': '30.07.2007', 'items': {'Chässpätz': {'cost': '18.50', 'quantity': 'I'}, 'Latte': {'cost': '9,00', 'quantity': '2'}, 'Schweinschnitzel': {'cost': '22.00', 'quantity': '1'}}, 'total': ' 54.50'}
כל מידע המפתח חולץ ונזרק אל הקבלה_ז'ונסון ..
בעיות בגישה המקובלת
למרות שחילצנו את המידע, הצינור לעיל מחמיץ כמה דברים והוא תת אופטימלי. על כל קבלה חדשה עלינו לכתוב מערך כללים חדש ולכן אינו ניתן להרחבה.
יכולות להיות הרבה וריאציות בפריסות, בגדלים בגופן ובגופן, במסמכים בכתב יד וכו '. הבדלים בפריסות ישפיעו על גישות מבוססות כללי ויש צורך להסביר את אלה, מה שהופך מייגע מאוד. ההבדלים בגדלים בגופן ובגופן מקשים על זיהוי מידע וחילוץ.
מדוע צינור Deep Learning מקצה לקצה טוב יותר?
אחת הבעיות הגדולות ביותר בגישה הסטנדרטית היא חוסר ההכללה. לא ניתן להכליל גישות מבוססות כלל וכללים חדשים צריכים להיכתב עבור כל תבנית חדשה. כמו כן יש לתת דין וחשבון על כל שינוי או וריאציה בתבנית קיימת.
גישה למידה עמוקה תוכל ללמוד כללים אלה ותוכל להכליל בקלות בין פריסות שונות בתנאי שיש לנו אותם במערך ההדרכה שלנו.
למידה מעמיקה וחילוץ מידע
כאן אני סוקר כמה מאמרים המשתמשים בגישות למידה עמוקה מקצה לקצה.
חמוד
CUTIE: למידה להבנת מסמכים עם חולץ מידע טקסט אוניברסלי מעורב
מאמר זה מציע שיטת חילוץ מידע מבוססת-למידה עם דרישה מוגבלת למשאבי אנוש. זה משלב את המידע משמעויות סמנטיות והפצה מרחבית של טקסטים במסמכים. המודל המוצע שלהם, CUTIE, מחולל מידע אוניברסלי על טקסטים אוניברסליים (CUTIE), מחיל רשתות עצביות מפותלות על טקסטים מגולענים שבהם הטקסטים משובצים כתכונות עם קונוטציות סמנטיות.
המודל המוצע, מתמודד עם בעיית מיצוי המידע העיקרי מאת
- ראשית יצירת טקסטים מגורדלים עם המוצע שיטת מיפוי רשתית לרשת. כדי ליצור את נתוני הרשת עבור הרשת העצבית המפותלת, תמונת המסמך הסרוקה מעובדת על ידי מנוע OCR כדי לרכוש את הטקסטים ואת מיקומם המוחלט / יחסי. הטקסטים ממופים מתמונת המסמך הסרוק המקורית לרשת המטרה, כך שהרשת הממופה שומרת על מערכת היחסים המרחבית המקורית בין טקסטים ועם זאת מתאימה יותר לשימוש כקלט לרשת העצבית המתפתלת.
- ואז מודל CUTIE מיושם על הטקסטים המגולענים. המידע הסמנטי העשיר מקודד מהטקסטים המגודרים כבר בשלב ההתחלתי של הרשת העצבית המתפתלת עם שכבת הטמעת מילים.
ה- CUTIE מאפשר בחינה בו זמנית של מידע סמנטי וגם של מידע מרחבי של הטקסטים בתמונת המסמך הסרוק ויכול להגיע למצב חדש של תמצית למיצוי מידע מרכזי.
דוגמנית CUTIE
יש להם 2 דגמים CUTIE-A ו- CUTIE-B. ה- CUTIE-A המוצע הוא רשת עצבית מפותלת בעלת קיבולת גבוהה הממזגת תכונות ברזולוציה מרובה מבלי לאבד תכונות ברזולוציה גבוהה. CUTIE-B היא רשת מפותלת עם שחרור אטרקטיבי להגדלת שדה הראיה ומודול Atros Spamial Pyring Pooling (ASPP) לתפיסת הקשרים בהיקפים רבים. שניהם CUTIE-A וגם CUITE-B מבצעים קידוד משמעות סמנטית עם שכבת הטמעת מילים כבר בשלב ההתחלה.
המשימה של CUTIE דומה למשימת פילוח סמנטית. הרשת הממופה מכילה נקודות נתונים מפוזרות (אסימוני טקסט) בניגוד לתמונות עליהן פותרו פיקסלים. הטקסטים המפתחים של רשת המיפוי לרשתות קרובים זה לזה או רחוקים זה מזה בגלל סוגים שונים של פריסת מסמכים. לפיכך שילוב יכולת עיבוד הקשר בהיקף רב-תואם מיטיב עם הרשת.
מערך נתונים
השיטה המוצעת מוערכת על פי אתגר הקריאה החזק של ICDAR 2019 במערכת נתונים של SROIE והיא גם על מערך נתונים שנבנה בעצמו עם 3 סוגים של תמונות מסמך סרוק.
אל האני מערך הנתונים של SROIE של ICDAR 2019 משמש המכיל 1000 תמונות קבלה סרוקות שלמות. כל תמונת קבלה מכילה כארבעה שדות טקסט מרכזיים, כגון שם טובין, מחיר יחידה, תאריך ועלות כוללת. הטקסט המסומן במערך הנתונים מורכב בעיקר מספרות ותווים באנגלית.
מערך הנתונים הבנוי העצמי מכיל 4, 484 מסמכי קבלה ספרדים סרוקים, הכוללים קבלות על מוניות, קבלות על בידור ארוחות (ME) ותקבולי מלונות, עם 9 שיעורי מידע שונים על המפתח.
תוצאות
הביצועים הכוללים מוערכים באמצעות דיוק ממוצע (AP - ונמדד במונחים של דיוק בכיתה על פני 9 הכיתות,.) ודיוק ממוצע רך (softAP) כאשר החיזוי של מחלקת מידע מפתח נקבע כנכון אם אמיתות קרקע חיוביות ניבאו כהלכה גם אם כמה תוצאות חיוביות שגויות כלולות בחיזוי הסופי. ניתוח משותף של AP ו- softAP מספק הבנה טובה יותר של ביצועי המודל.
אתה יכול לראות את התוצאות בטבלה שלהלן.
GCNs עבור VRDs
שחרור גרפים לחילוץ מידע רב-מודאלי ממסמכים עשירים חזותית
מאמר זה מציג מודל מבוסס התפתחות גרפים המשלב מידע טקסטואלי ויזואלי המוצג במסמכים חזותיים עשירים (VRD). הטבעות גרף מאומנות לסכם את ההקשר של קטע טקסט במסמך, ומשולבות עוד יותר עם הטבעות טקסט להפקת ישויות.
בעיתון זה הם מכנים מסמך VRD ואני אעמוד בזה.
כל מסמך מעוצב כגרף של קטעי טקסט, כאשר כל קטע טקסט מורכב ממיקום הקטע והטקסט בתוכו. הגרף מורכב מצמתים המייצגים קטעי טקסט, וקצוות המייצגים תלות חזותית, כמו צורות יחסית ומרחק, בין שני צמתים.
הטבעות הגרף המיוצרות על ידי התפתחות גרפים מסכמות את ההקשר של קטע טקסט במסמך, המשולבות בהמשך עם הדבצות טקסט להפקת ישויות באמצעות מודל סטנדרטי BiLSTM-CRF.
מספר סימוכין
המודל מקודד תחילה כל קטע טקסט במסמך להטמעת תרשים, תוך שימוש בכמה שכבות של התפתחות גרף. ההטבעה מייצגת את המידע בפלח הטקסט בהקשר ההקשר החזותי והטקסטואלי שלו. הקשר חזותי הוא פריסת המסמך ומיקומם היחסי של הקטע הבודד לקטעים אחרים. ההקשר הטקסטואלי הוא מכלול מידע הטקסט במסמך הכללי; המודל לומד להקצות משקלים גבוהים יותר על טקסטים מקטעי שכנים. לאחר מכן הנייר משלב את הטבעות הגרף עם הטבעות הטקסט ומיישם מודל BiLSTM-CRF מודל לחילוץ ישויות.
מערך נתונים
משתמשים בשני מערכי נתונים מהעולם האמיתי. מדובר בחשבוניות מס ערך מוסף (VATI) ותקבולי רכישה בינלאומיים (IPR). מע"מ כולל 3000 תמונות שהועלו על ידי המשתמש ויש לו 16 ישויות לדייק. ישויות דוגמא הן שמות הקונה / מוכר, תאריך וסכום המס. החשבוניות הינן בסינית ויש לה תבנית קבועה מכיוון שהיא חשבונית סטנדרטית לאומית.
IPR הוא מערך נתונים של 1500 מסמכי קבלה סרוקים באנגלית שיש להם 4 ישויות לדייק (מספר חשבונית, שם ספק, שם משלם וסכום כולל). קיימות 146 תבניות עבור הקבלות.
תוצאות
ציון F1 משמש להערכת ביצועי הדגם בכל הניסוי. הטבלה שלהלן מציגה את התוצאות על מערכי הנתונים של thr 2.
קו הבסיס I מיישם BiLSTM-CRF על כל קטע טקסט, כאשר כל קטע טקסט הוא משפט אינדיבידואלי.
Baseline II מיישם את מודל התיוג על מקטעי הטקסט המקושרים.
מהיר יותר-RCNN + AED
גישה למידה עמוקה להכרת קבלה
מאמר זה מציג גישה לימודית מעמיקה לזיהוי קבלות סרוקות. מערכת הזיהוי כוללת שני מודולים עיקריים: זיהוי טקסט המבוסס על רשת הצעות טקסט לחיבור וזיהוי טקסט המבוסס על קידוד-מפענח מבוסס תשומת לב. המערכת השיגה 71.9% מציון ה- F1 לצורך משימת איתור וזיהוי.
זיהוי טקסט
מבנה ה- CTPN דומה למהיר יותר R-CNN, עם תוספת של שכבת LSTM. דגם הרשת מורכב בעיקר משלושה חלקים: מיצוי תכונות על ידי VGG16, LSTM דו כיווני ורגרסיה של תיבת הגבלה
זיהוי טקסט
ה- AED משמש לזיהוי שורות טקסט. ל- AED שני מודולים עיקריים: DenseNet לחילוץ תכונות מתמונת טקסט ו- LSTM בשילוב מודל קשב לחיזוי טקסט הפלט.
מערך נתונים
נעשה שימוש בנתון הנתונים של SROIE 2019. הם חילקו את נתוני האימונים לאימונים, אימות ובדיקות ובחרו באופן אקראי 80% מהתקבולים לאימונים, 10% מהקבלות לאימות, והשאר לבדיקה. והתוצאה היא 500 קבלות לאימונים, 63 קבלות לאימות ו 63- לבדיקה.
תוצאות
לצורך איתור טקסט, הנייר משתמש בצמתים-על-איחוד מודע לאיתור (TIoU) לצורך זיהוי טקסט, הנייר השתמש ב- F1, Precision ו- Recall.
טבלה I מציגה את התוצאה של CTPN בשלושה תנאים: CTPN בתמונות מקוריות; עיבוד מקדים + CTPN, עיבוד מקדים + אימות CTPN + OCR. טבלה 2 מציגה את תוצאות רשת AED.
יש כמובן דרך קלה ואינטואיטיבית יותר לעשות זאת.
צריך חזק קבלת OCR להוציא נתונים מקבלות? בדוק את Nanonets קבלה OCR API!
OCR עם Nanonets
עדכון מס' 1: זה עתה פרסמנו את שלנו קבלת OCR דגם מאומן מראש. עבור אל https://app.nanonets.com והתחל לבדוק!
אל האני ממשק ה- API של Nanonets OCR מאפשר לך לבנות דגמי OCR בקלות. אינך צריך לדאוג מעיבוד מוקדם של התמונות שלך או לדאוג מתבניות תואמות או לבנות מנועים מבוססי כללים כדי להגדיל את הדיוק של דגם ה- OCR שלך.
אתה יכול להעלות את הנתונים שלך, להעיר אותם, להגדיר את המודל להתאמן ולהמתין לקבלת תחזיות דרך ממשק משתמש מבוסס דפדפן מבלי לכתוב שורת קוד אחת, לדאוג ל- GPUs או למצוא את הארכיטקטורות המתאימות למודלי הלמידה העמוקה שלך. תוכל גם לרכוש את תגובות JSON מכל חיזוי כדי לשלב אותה במערכות שלך ולבנות אפליקציות המופעלות על ידי למידת מכונות הבנויות על אלגוריתמים מהמתקדמים ותשתית חזקה.
באמצעות GUI: https://app.nanonets.com/
באפשרותך להשתמש בממשק ה- API של Nanonets-OCR על ידי ביצוע הצעדים הבאים:
שלב 1: שיבט את ה- Repo, התקן תלות
git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm
שלב 2: השג את מפתח ה- API החינמי שלך
השג את מפתח ה- API שלך בחינם http://app.nanonets.com/#/keys
שלב 3: הגדר את מפתח ה- API כמשתנה לסביבה
export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE
שלב 4: צור דגם חדש
python ./code/create-model.py
הערה: זה מייצר MODEL_ID הדרוש לך לשלב הבא
שלב 5: הוסף מזהה מודל כמשתנה לסביבה
export NANONETS_MODEL_ID=YOUR_MODEL_ID
הערה: תקבל את YOUR_MODEL_ID מהצעד הקודם
שלב 6: העלה את נתוני ההדרכה
נתוני האימונים נמצאים ב- images
(קבצי תמונות) ו- annotations
(הערות לקבצי התמונה)
python ./code/upload-training.py
שלב 7: דגם הרכבת
לאחר העלאת התמונות, התחל לאמן את הדגם
python ./code/train-model.py
שלב 8: קבל מצב דגם
הדגם לוקח ~ שעתיים לאימונים. תקבל דוא"ל ברגע שהמודל יוכשר. בינתיים אתה בודק את מצב הדגם
python ./code/model-state.py
שלב 9: עשה חיזוי
ברגע שהמודל מאומן. אתה יכול לבצע תחזיות באמצעות המודל
python ./code/prediction.py ./images/151.jpg
לקריאה נוספת
- מנוע OCR לחילוץ פריטי מזון, מחירים, כמות, יחידות מתמונות קבלה, גישה מבוססת כללי היוריסטיקה
- זיהוי תמונות קבלה אוטומטיות, חיתוך וניתוח
- שלבים מהירים לדיגיטליזציה של הקבלות והחשבוניות שלך
עדכון:
הוסיף חומר קריאה נוסף על ההתקדמות האחרונה באוטומציה של דיגיטציה של קבלות באמצעות OCR ולמידה עמוקה.
- "
- &
- 11
- 2019
- 39
- 67
- 7
- 9
- אודות
- חשבונאות
- מדויק
- הושג
- לרכוש
- לרוחב
- יתרונות
- אלגוריתמים
- תעשיות
- כְּבָר
- למרות
- בין
- כמות
- אנליזה
- ניתוח
- API
- יישומים
- מריחה
- גישה
- אפליקציות
- APT
- סביב
- אמנות
- מאמר
- אוטומציה
- מְמוּצָע
- דובים
- התחלה
- הטבות
- הגדול ביותר
- שחור
- גבול
- אריזה מקורית
- דפדפן
- לִבנוֹת
- שיחה
- קיבולת
- הון
- CD
- לאתגר
- האתגרים
- סינית
- מיון
- קוד
- Common
- חברות
- לעומת
- תְצוּרָה
- בלבול
- מכיל
- תוכן
- להמשיך
- לִשְׁלוֹט
- עלויות
- יכול
- יוצרים
- לקוחות
- CVC
- נתונים
- ניתוח נתונים
- מערך נתונים
- מסד נתונים
- עמוק יותר
- עיכובים
- מסירה
- זוהה
- איתור
- מפותח
- אחר
- דיגיטלי
- דיגיטציה
- דיגיטציה
- ספרות
- מרחק
- הפצה
- מסמכים
- דוא"ל
- בקלות
- יְעִילוּת
- אמייל
- אנגלית
- בידור
- סביבה
- חיוני
- יוֹרוֹ
- הכל
- דוגמה
- Excel
- לְנַסוֹת
- מהר
- מהר יותר
- מאפיין
- תכונות
- שדות
- מסננים
- כספי
- ראשון
- לעקוב
- הבא
- טופס
- פוּרמָט
- מצא
- מסגרת
- חופשי
- פונקציונלי
- ליצור
- מקבל
- Git
- מטרה
- הולך
- טוב
- סחורות
- גוונים אפורים
- רֶשֶׁת
- ראש
- כאן
- גָבוֹהַ
- מלון
- איך
- HTTPS
- עצום
- רעיון
- הזדהות
- לזהות
- תמונה
- פְּגִיעָה
- ליישם
- חשוב
- לכלול
- כלול
- כולל
- להגדיל
- גדל
- מדד
- בנפרד
- מידע
- תשתית
- לשלב
- ברמה בינלאומית
- אינטואיטיבי
- IT
- מפתח
- ידוע
- שפה
- האחרון
- עוֹפֶרֶת
- לִלמוֹד
- למידה
- סִפְרִיָה
- מוגבל
- קו
- קשר
- רשימה
- ספרות
- מיקום
- ארוך
- הסתכלות
- מכונה
- למידת מכונה
- עשייה
- ניהול
- ניהול
- מדריך ל
- משמעות
- זכרון
- אכפת לי
- מודל
- מודלים
- רוב
- הכי פופולארי
- שמות
- לאומי
- ניווט
- רשת
- רשתות
- צמתים
- רעש
- אפשרויות
- להזמין
- הזמנות
- ארגונים
- אחר
- אַחֶרֶת
- מאמר
- תבנית
- ביצועים
- הופעות
- תמונה
- לְשַׂחֵק
- פופולרי
- חזק
- נבואה
- התחזיות
- יפה
- מחיר
- בעיה
- תהליך
- תהליכים
- מיוצר
- המוצר
- הפקה
- הצעה
- מספק
- לִרְכּוֹשׁ
- נרכש
- איכות
- חי
- RE
- קריאה
- לקבל
- רגיל
- קשר
- מייצג
- נדרש
- REST
- מסעדה
- תוצאות
- סקירה
- כללי
- להרחבה
- סריקה
- פילוח
- נבחר
- שירותים
- סט
- צורות
- משמעותי
- דומה
- פָּשׁוּט
- So
- משהו
- ספרדי
- במיוחד
- פיצולים
- התמחות
- התחלה
- מדינה
- חנות
- חזק
- ניכר
- לספק
- שרשרת אספקה
- שרשראות אספקה
- תומך
- השוויצרי
- מערכת
- מערכות
- יעד
- משימות
- מס
- מיסוי
- טכנולוגיה
- בדיקות
- דרך
- זמן
- דורש זמן רב
- מטבעות
- מעקב
- סחר
- מסורתי
- הדרכה
- עסקה
- שקיפות
- ui
- להבין
- אוניברסלי
- להשתמש
- ערך
- ספקים
- אימות
- לצפיה
- חזון
- W
- לחכות
- מה
- מי
- חלונות
- בתוך
- לְלֹא
- תיק עבודות
- עובד
- כתיבה
- X
- XML
- שנים