זיהוי תווים אופטי עם טסרט

1. סקירה כללית

עם התקדמות הטכנולוגיה בתחום ה- AI ולמידת המכונה, אנו זקוקים לכלים לזיהוי טקסט בתוך תמונות.

במדריך זה נחקור את Tesseract, מנוע זיהוי תווים אופטי (OCR), עם כמה דוגמאות לעיבוד תמונה לטקסט.

2. טסראקט

Tesseract הוא מנוע OCR בעל קוד פתוח שפותח על ידי HP מכיר ביותר מ -100 שפות, יחד עם תמיכה בשפות אידאוגרפיות ושפות מימין לשמאל. גַם, אנו יכולים לאמן את טסרקט לזהות שפות אחרות.

זה מכיל שני מנועי OCR לעיבוד תמונה - מנוע OCR LSTM (זיכרון ארוך לטווח קצר) ומנוע OCR מדור קודם שפועל על ידי זיהוי דפוסי אופי.

מנוע ה- OCR משתמש בספריית Leptonica כדי לפתוח את התמונות והתומכות פורמטי פלט שונים כמו טקסט רגיל, hOCR (HTML ל- OCR), PDF ו- TSV.

3. התקנה

Tesseract זמין להורדה / התקנה בכל מערכות ההפעלה העיקריות.

לדוגמא, אם אנו משתמשים ב- macOS, אנו יכולים להתקין את מנוע ה- OCR באמצעות Homebrew:

לחלוט להתקין tesseract 

נצפה כי החבילה מכילה קבוצה של קבצי נתוני שפה, כמו אנגלית, וזיהוי כיוון וסקריפט (OSD), כברירת מחדל:

==> התקנת tesseract ==> הורדה //homebrew.bintray.com/bottles/tesseract-4.1.1.high_sierra.bottle.tar.gz ==> שפיכת tesseract-4.1.1.high_sierra.bottle.tar.gz = => אזהרות נוסחה זו מכילה רק את קבצי הנתונים בשפה "eng", "osd" ו- "snum". אם אתה זקוק לשפות נתמכות אחרות, הפעל את 'brew install tesseract-lang'. ==> סיכום /usr/local/Cellar/tesseract/4.1.1: 65 קבצים, 29.9MB

עם זאת, אנו יכולים להתקין את tesseract-lang מודול לתמיכה בשפות אחרות:

לחלוט להתקין tesseract-lang

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

יאם להתקין

כמו כן, בואו להוסיף תמיכה בשפה:

yum install tesseract-langpack-eng Yum install tesseract-langpack-spa

הנה, הוספנו את הנתונים שהוכשרו בשפה עבור אנגלית וספרדית.

עבור Windows, אנו יכולים להשיג את המתקינים מ- Tesseract ב- UB Mannheim.

4. שורת פיקוד של Tesseract

4.1. לָרוּץ

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

לדוגמה, בואו ניקח תמונת מצב של האתר שלנו:

ואז נפעיל את טרטרקט פקודה לקרוא את baeldung.png תמונת מצב וכתוב את הטקסט ב- פלט.טקסט קוֹבֶץ:

פלט tesseract baeldung.png

ה פלט.טקסט הקובץ ייראה כך:

REST עם Spring Learn Spring (חדש!) ההתייחסות הקנונית לבניית API בכיתה ייצור עם Spring. מאין ניסיון לבניית דברים באמת. y סקירות שבועיות של Java

אנו יכולים לראות כי Tesseract לא עיבד את כל תוכן התמונה. כי דיוק הפלט תלוי בפרמטרים שונים כמו איכות התמונה, השפה, פילוח העמודים, הנתונים המאומנים והמנוע המשמש לעיבוד תמונה.

4.2. תמיכת שפה

כברירת מחדל, מנוע ה- OCR משתמש באנגלית בעת עיבוד התמונות. עם זאת, אנו יכולים להכריז על השפה באמצעות ה- -l טַעֲנָה:

בואו נסתכל על דוגמה אחרת עם טקסט רב-שפות:

ראשית, בואו נעבד את התמונה עם שפת האנגלית המוגדרת כברירת מחדל:

פלט tesseract multiLanguageText.png 

הפלט ייראה כך:

Der, .schnelle ”braune Fuchs springt iiber den faulen Hund. Le renard brun «rapide» מטגנים par-dessus le chien paresseux. La volpe marrone rapida salta sopra il cane pigro. El zorro marron rapido salta sobre el perro perezoso. A raposa marrom rapida salta sobre 0 cao preguicoso.

לאחר מכן, בואו נעבד את התמונה בשפה הפורטוגזית:

פלט tesseract multiLanguageText.png -l por

לכן, מנוע ה- OCR יגלה גם אותיות פורטוגזיות:

Der, .schnelle ”braune Fuchs springt iber den faulen Hund. Le renard brun «rapide» מטגנים par-dessus le chien paresseux. La volpe marrone rapida salta sopra il cane pigro. El zorro marrón rápido salta sobre el perro perezoso. A raposa marrom rápida salta sobre o cão preguiçoso.

באופן דומה, אנו יכולים להכריז על שילוב של שפות:

פלט tesseract multiLanguageText.png -l spa + por

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

4.3. מצב פילוח עמוד

Tesseract תומך במצבי פילוח עמודים שונים כמו OSD, פילוח עמודים אוטומטי וטקסט דליל.

אנו יכולים להכריז על מצב פילוח העמודים באמצעות ה- –Psm ארגומנט עם הערך 0 עד 13 עבור מצבים שונים:

פלט tesseract multiLanguageText.png --psm 1

כאן, על ידי הגדרת ערך 1, הכרזנו על פילוח עמודים אוטומטי עם OSD לעיבוד תמונות.

בואו נסתכל על כל מצבי פילוח העמודים הנתמכים:

4.4. מצב מנוע OCR

באופן דומה, אנו יכולים להשתמש במצבי מנוע שונים כמו מנוע מורשת ומערכת LSTM בזמן עיבוד התמונות.

לשם כך, אנו יכולים להשתמש ב- –אום ארגומנט עם הערך 0 עד 3:

פלט tesseract multiLanguageText.png - סוג 1

מצבי מנוע ה- OCR הם:

4.5. טסדאטה

Tesseract מכיל שתי קבוצות של נתונים מאומנים למנוע LSTM OCR - דגמי LSTM המאומנים ביותר וגרסאות שלמות מהירות של דגמי LSTM מאומנים.

הראשון מספק דיוק טוב יותר, והאחרון מציע מהירות טובה יותר בעיבוד תמונות.

כמו כן, Tesseract מספק נתונים מאומנים משולבים עם תמיכה הן במנוע ה- OCR מדור קודם והן ב- LSTM OCR.

אם אנו משתמשים במנוע ה- OCR מדור קודם מבלי לספק את הנתונים המאומנים התומכים, טסרקט תשליך שגיאה:

שגיאה: בקשת מנוע Tesseract (מדור קודם), אך הרכיבים אינם קיימים ב- /usr/local/share/tessdata/eng.traineddata !! טעינת השפה 'eng' נכשלה Tesseract לא הצליחה לטעון אף שפה!

לכן, עלינו להוריד את הנדרש .דריינות נתונים קבצים וגם לשמור אותם כברירת מחדל טסה נתונים או הכריז על המיקום באמצעות –טיסה נתונים-דיר טַעֲנָה:

פלט tesseract multiLanguageText.png - tessdata-dir / עיבוד תמונה / tessdata

4.6. תְפוּקָה

אנו יכולים להכריז על טיעון לקבלת פורמט הפלט הנדרש.

למשל, כדי לקבל פלט PDF שניתן לחפש:

tesseract multiLanguageText.png פלט pdf

זה ייצור את פלט. pdf קובץ עם שכבת הטקסט הניתנת לחיפוש (עם טקסט מוכר) בתמונה שסופקה.

באופן דומה, עבור פלט hOCR:

פלט tesseract multiLanguageText.png פלט hocr

כמו כן, אנו יכולים להשתמש טרטרקט –עזרה ו tesseract –עזרה-אקסטרה פקודות למידע נוסף על השימוש בשורת הפקודה tesseract.

5. Tess4J

Tess4J הוא מעטפת Java עבור ממשקי ה- API של Tesseract המספקת תמיכה ב- OCR לפורמטים שונים של תמונות כמו JPEG, GIF, PNG ו- BMP.

ראשית, בואו נוסיף את האחרונה tess4j תלות Maven שלנו pom.xml:

 net.sourceforge.tess4j tess4j 4.5.1 

ואז נוכל להשתמש ב- טסראקט הכיתה הניתנת על ידי tess4j לעיבוד התמונה:

תמונת קובץ = קובץ חדש ("src / main / resources / images / multiLanguageText.png"); Tesseract tesseract = Tesseract חדש (); tesseract.setDatapath ("src / main / resources / tessdata"); tesseract.setLanguage ("eng"); tesseract.setPageSegMode (1); tesseract.setOcrEngineMode (1); תוצאת מחרוזת = tesseract.doOCR (תמונה);

כאן קבענו את הערך של ה- נתיב נתונים למיקום הספריה שמכיל osd.traineddata ו eng.traineddata קבצים.

לבסוף, אנו יכולים לאמת את חוּט פלט התמונה מעובד:

Assert.assertTrue (result.contains ("Der, .schnelle" braune Fuchs springt)); Assert.assertTrue (result.contains ("סלטה סופרה איל קני פיגרו. אל זורו"));

בנוסף, אנו יכולים להשתמש ב- setHocr שיטה להשיג את פלט ה- HTML:

tesseract.setHocr (נכון);

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

תוצאה = tesseract.doOCR (imageFile, מלבן חדש (1200, 200));

בדומה ל- Tess4J, אנו יכולים להשתמש ב- Tesseract Platform לשילוב Tesseract ביישומי Java. זהו עטיפה של JNI של ממשקי ה- API של Tesseract המבוססים על ספריית הגדרות קבועות מראש של JavaCPP.

6. מסקנה

במאמר זה בחנו את מנוע ה- OCR של Tesseract עם כמה דוגמאות לעיבוד תמונה.

ראשית, בחנו את טרטרקט כלי שורת פקודה לעיבוד התמונות, יחד עם קבוצה של טיעונים כמו -l, –Psm ו –אום.

ואז, חקרנו tess4j, עטיפת Java לשילוב Tesseract ביישומי Java.

כרגיל, כל יישומי הקוד זמינים ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found