التعرف الضوئي على الحروف (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/