זיהוי תווים אופטי (OCR) היא טכנולוגיה שמאפשרת לחלץ טקסט קריא מתמונות, מסמכים סרוקים ואפילו רשומות כתובות ביד. בפייתון, כלי OCR עברו שיפורים משמעותיים במהלך השנים, ועם הגרסה האחרונה, אלה הספריות מציעות כעת פתרונות עוצמתיים ויעילים יותר.
מאמר זה יכסה את שבעת הספריות המובילות בתחום OCR ב־Python, וידגיש את היתרונות שלהן, התכונות הייחודיות שלהן, ודוגמאות לקוד כדי לסייע לך להתחיל.
1. Tesseract OCR (pytesseract)
Tesseract הוא ללא ספק הספרייה הכי פופולרית ומשמשת בצורה נרחבת ביישום פייתון. פותח במקור על־ידי HP וכיום מתוחזק על־ידי Google, Tesseract מספק יכולות OCR באיכות גבוהה למעל ל־100 שפות.
תכונות מרכזיות:
- קוד פתוח וחינם לשימוש.
- תמיכה במספר שפות, כולל אלפביתים לא לטיניים.
- זיהוי טקסט בתמונות, מסמכים סרוקים ו־PDFים.
- ניתן להתאים בהתאמה אישית עם נתוני הכשרה מותאמים למקרים מיוחדים.
- עובד טוב עם כלי עיבוד מוקדם כמו OpenCV כדי לשפר את הדיוק.
כדי להתקין Tesseract OCR על לינוקס, עקוב אחר הצעדים הבאים בהתאם להפצתך:
sudo apt install tesseract-ocr [On Debian, Ubuntu and Mint] sudo yum install tesseract [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/tesseract [On Gentoo Linux] sudo apk add tesseract [On Alpine Linux] sudo pacman -S tesseract [On Arch Linux] sudo zypper install tesseract [On OpenSUSE] sudo pkg install tesseract [On FreeBSD]
לאחר ש-Tesseract מותקן, אם תרצה להשתמש בו עם Python, עליך להתקין את חבילת pytesseract באמצעות מנהל החבילות pip.
pip3 install pytesseract OR pip install pytesseract
הנה דוגמה לקוד Python לשימוש ב-Tesseract OCR עם ספריית pytesseract
כדי לחלץ טקסט מתמונה.
import pytesseract from PIL import Image # Load an image img = Image.open("image_sample.png") # Use Tesseract to extract text text = pytesseract.image_to_string(img) # Print the extracted text print(text)
2. EasyOCR
EasyOCR היא ספריית OCR מצוינת נוספת לפייתון שתומכת ביותר מ-80 שפות והיא קלה לשימוש למתחילים. היא בנויה על טכניקות למידה עמוקה, מה שהופך אותה לבחירה מצוינת עבור אלה שרוצים לנצל טכנולוגיית OCR מודרנית.
תכונות מפתח:
- דיוק גבוה עם מודלים של למידה עמוקה.
- תומכת במגוון רחב של שפות.
- יכולה לזהות טקסט בתמונות אנכיות ורב-לשוניות.
- API פשוט וקל להבנה.
כדי להתקין EasyOCR על לינוקס, אתה יכול להשתמש בפקודת pip
הבאה על בסיס ההפצה שלך.
pip3 install easyocr OR pip install easyocr
כאשר ההתקנה הושלמה, תוכל להשתמש ב־EasyOCR כדי לחלץ טקסט מתוך תמונה.
import easyocr # Initialize the OCR reader reader = easyocr.Reader(['en']) # Extract text from an image result = reader.readtext('image_sample.png') # Print the extracted text for detection in result: print(detection[1])
3. OCRopus
OCRopus הוא מערכת OCR מקור פתוח שפותחה על ידי Google. במרבית המקרים משמשת עבור מסמכים היסטוריים וספרים, אך OCRopus יכולה גם לשמש במגוון רחב של משימות חילוץ טקסט.
תכונות עיקריות:
- מתמחה בניתוח פריסת מסמך וחילוץ טקסט.
- נבניתה עם רעיון המודולריות, המאפשר התאמה קלה.
- יכולה לעבוד עם מסמכים מרובי עמודים ומאגרי מידע גדולים.
הנה קטע קוד Python לחילוץ טקסט מתוך תמונה.
import subprocess # Use OCRopus to process an image subprocess.run(['ocropus', 'identify', 'image_sample.png'])
4. PyOCR
PyOCR הוא חבילת Python שמסביב למנועי OCR מרובים, כולל Tesseract ו־CuneiForm. היא מספקת ממשק פשוט לשילוב פונקציות OCR ביישומי Python.
תכונות עיקריות:
- יכולה להתממשק עם מנועי OCR מרובים.
- מספקת API פשוט לחילוץ טקסט.
- ניתן לשלבה עם ספריות עיבוד תמונה לתוצאות משופרות.
PyOCR דורשת את Tesseract (מנוע OCR) ו־Pillow (ספריית עיבוד תמונה). ניתן להתקין אותם באמצעות הפקודות הבאות:
sudo apt install tesseract-ocr [On Debian, Ubuntu and Mint] sudo yum install tesseract [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/tesseract [On Gentoo Linux] sudo apk add tesseract [On Alpine Linux] sudo pacman -S tesseract [On Arch Linux] sudo zypper install tesseract [On OpenSUSE] sudo pkg install tesseract [On FreeBSD]
כעת, ניתן להתקין את הספריות pyocr
ו־pillow
באמצעות pip
:
pip3 install pyocr pillow OR pip install pyocr pillow
הנה דוגמא בפייתון שמחלץ טקסט מתמונה באמצעות PyOCR ו־Tesseract:
import pyocr from PIL import Image # Choose the OCR tool (Tesseract or CuneiForm) tool = pyocr.get_available_tools()[0] # Load the image img = Image.open('image_sample.png') # Extract text from the image text = tool.image_to_string(img) # Print the extracted text print(text)
5. PaddleOCR
PaddleOCR היא ספריית OCR שפותחה על ידי PaddlePaddle, מרכז לימוד עמוק. היא תומכת במעל 80 שפות ומציעה דיוק מתקדם עקב שימושה במודלי למידת עמוק.
תכונות מרכזיות:
- ביצועים גבוהים, במיוחד עבור תמונות עם רקעים מורכבים.
- תמיכה באיתור טקסט, זיהוי וניתוח פריסת הטקסט.
- כוללת מודלים מאומנים מראש למגוון שפות.
כדי להתקין את PaddleOCR ב־Linux, יש להשתמש בפקודה הבאה:
pip3 install paddlepaddle paddleocr OR pip install paddlepaddle paddleocr
הנה דוגמא בפייתון שמחלץ טקסט מתמונה באמצעות ספריית paddleocr:
from paddleocr import PaddleOCR # Initialize the OCR ocr = PaddleOCR(use_angle_cls=True, lang='en') # Perform OCR on an image result = ocr.ocr('image_sample.png', cls=True) # Print the extracted text for line in result[0]: print(line[1])
6. Kraken
Kraken היא ספריית OCR בעלת ביצועים גבוהים שמיועדת במיוחד לטקסט היסטורי ורב־שפתי. היא בנויה מעל OCRopus ומספקת תכונות נוספות לפריסות מורכבות ולחילוץ טקסט.
תכונות מרכזיות:
- מתאימה ביותר לספרים ישנים ול־OCR רב־שפתי.
- מתמודדת עם פריסות טקסט מורכבות וגופנים היסטוריים.
- משתמשת בלמידת מכונה לקבלת דיוק זיהוי טוב יותר.
כדי להתקין את Kraken ב-Linux, יש להשתמש בפקודה:
pip3 install kraken OR pip install kraken
הנה דוגמה ב-Python שמחלצת טקסט מתוך תמונה באמצעות ספריית kraken:
import kraken # Load the model and recognize text text = kraken.binarize("image_sample.png") # Print the recognized text print(text)
7. Textract (AWS)
AWS Textract הוא שירות OCR מבוסס ענן של אמזון שיכול לנתח מסמכים וטפסים ולחלץ טקסט בדיוק גבוה. הוא משתלב בצורה חלקה עם שירותי AWS אחרים.
תכונות עיקריות:
- OCR בענן עם פתרונות התכבדות.
- תמיכה בניתוח מבנה של מסמכים, כולל טבלאות וטפסים.
- אינטגרציה עם שירותי AWS לעיבוד נתונים נוספים.
כדי להתקין Textract ב-Linux, יש להשתמש בפקודה:
pip3 install boto3 OR pip install boto3
הנה סקריפט Python דוגמתי שמשתמש ב־AWS Textract כדי לחלץ טקסט ממסמך (לדוגמה, PDF סרוק או קובץ תמונה).
import boto3 # Initialize a Textract client client = boto3.client('textract') # Path to the image or PDF file you want to analyze file_path = 'path_to_your_file.png' # Replace with your file path # Open the file in binary mode with open(file_path, 'rb') as document: # Call Textract to analyze the document response = client.detect_document_text(Document={'Bytes': document.read()}) # Print the extracted text for item in response['Blocks']: if item['BlockType'] == 'LINE': print(item['Text'])
מסקנה
בחירת ספריית OCR נכונה ב-Python תלויה במקרה השימוש הספציפי, בדרישות השפה ובמורכבות המסמכים שאתה מעבד. בין שאתה עובד על מסמכים היסטוריים, טקסטים רבי שפות או פשוט PDFים סרוקים, ספריות אלו מספקות כלים עצומים לחילוץ טקסט.
עבור מתחילים, Tesseract ו־EasyOCR הם נקודות התחלה מצוינות בשל קלות השימוש שלהם והאימוץ הרחב. אולם, עבור משימות מתקדמות ומתמחות יותר, ספריות כמו PaddleOCR, OCRopus, ו־Kraken מציעות גמישות ודיוק גדולים יותר.
Source:
https://www.tecmint.com/python-text-extraction-from-images/