أفضل 7 مكتبات Python لتحويل النصوص من الصور

التعرف الضوئي على الحروف (OCR) هي تقنية تستخرج نص قابل للقراءة من الصور والمستندات الممسوحة ضوئيًا، وحتى الملاحظات المكتوبة يدويًا. في لغة البرمجة بايثون، تطورت أدوات OCR بشكل كبير على مر السنين، ومع الإصدار الأحدث، توفر هذه المكتبات الآن حلاً أقوى وأكثر كفاءة.

سيتناول هذا المقال أفضل سبع مكتبات OCR في لغة بايثون، مسلطًا الضوء على نقاط قوتها وميزاتها الفريدة، بالإضافة إلى أمثلة على الشفرات لمساعدتك في البدء.

1. Tesseract OCR (pytesseract)

تيسيراكت بلا شك هي أكثر المكتبات OCR شيوعًا واستخدامًا في بيئة بايثون. طوّرت أصلاً من قبل HP وتُدار الآن من قبل Google، توفر تيسيراكت إمكانيات OCR عالية الجودة لأكثر من 100 لغة.

الميزات الرئيسية:

  • مفتوح المصدر ومجاني الاستخدام.
  • يدعم عدة لغات، بما في ذلك الأبجديات غير اللاتينية.
  • يعترف بالنص في الصور والمستندات الممسوحة ضوئيًا وملفات PDF.
  • يمكن تخصيصه ببيانات تدريب مخصصة لحالات الاستخدام المتخصصة.
  • يعمل بشكل جيد مع أدوات المعالجة المسبقة مثل OpenCV لتحسين الدقة.

لتثبيت Tesseract OCR على نظام Linux، اتبع هذه الخطوات حسب التوزيعة التي تستخدمها:

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 هي مكتبة أخرى ممتازة لـ Python تدعم أكثر من 80 لغة وسهلة الاستخدام للمبتدئين. تم بناؤها على تقنيات التعلم العميق، مما يجعلها خيارًا ممتازًا لأولئك الذين يرغبون في الاستفادة من تكنولوجيا OCR الحديثة.

الميزات الرئيسية:

  • دقة عالية مع نماذج التعلم العميق.
  • يدعم مجموعة واسعة من اللغات.
  • يمكنه اكتشاف النصوص في الصور العمودية ومتعددة اللغات.
  • واجهة برمجة تطبيقات بسيطة وسهلة الفهم.

لتثبيت EasyOCR على نظام Linux، يمكنك استخدام الأمر 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 wrapper حول عدة محركات OCR، بما في ذلك Tesseract و CuneiForm. يوفر واجهة برمجة التطبيقات البسيطة لدمج وظائف OCR في تطبيقات Python.

الميزات الرئيسية:

  • يمكن التفاعل مع عدة محركات OCR.
  • يوفر واجهة برمجة التطبيقات البسيطة لاستخراج النص.
  • يمكن الجمع بينه وبين مكتبات معالجة الصور لتحسين النتائج.

يتطلب Tesseract (محرك OCR) و Pillow (مكتبة معالجة الصور) لـ PyOCR. يمكنك تثبيتهما باستخدام الأوامر التالية:

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 في لينكس، استخدم:

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 وتوفر ميزات إضافية لتخطيطات معقدة واستخراج النصوص.

الميزات الرئيسية:

  • مناسبة بشكل أفضل للكتب القديمة والنصوص متعددة اللغات.
  • تتعامل مع تخطيطات النصوص المعقدة والخطوط التاريخية.
  • يستخدم تعلم الآلة لزيادة دقة التعرف.

لتثبيت 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 المستندة إلى السحابة الخاصة بأمازون التي يمكنها تحليل المستندات والنماذج واستخراج النص بدقة عالية. إنها تتكامل بسلاسة مع خدمات أمازون الأخرى.

الميزات الرئيسية:

  • OCR مستندة إلى السحابة مع حلول قابلة للتوسيع.
  • يدعم تحليل هيكل المستند، بما في ذلك الجداول والنماذج.
  • التكامل مع خدمات أمازون لمعالجة البيانات بشكل أفضل.

لتثبيت 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/