7 הספריות המובילות ב-Python עבור יישום Optical Character Recognition (OCR) לחילוץ טקסט מתמונות

זיהוי תווים אופטי (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/