Оптическое распознавание символов (OCR) – это технология, которая извлекает читаемый текст из изображений, отсканированных документов и даже рукописных заметок. В Python инструменты OCR значительно развивались с годами, и с последней версией эти библиотеки теперь предлагают еще более мощные, эффективные решения.
В этой статье рассматриваются семь лучших библиотек OCR в Python, выделяя их преимущества, уникальные особенности и примеры кода, чтобы помочь вам начать.
1. Tesseract OCR (pytesseract)
Tesseract безусловно является самой популярной и широко используемой библиотекой OCR в экосистеме Python. Изначально разработанный HP и в настоящее время поддерживаемый Google, Tesseract обеспечивает высококачественные возможности 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 OCR, поддерживающая более 80 языков и простая в использовании для начинающих. Она построена на технологиях глубокого обучения, что делает ее отличным выбором для тех, кто хочет использовать современные технологии OCR.
Основные особенности:
- Высокая точность с моделями глубокого обучения.
- Поддерживает широкий спектр языков.
- Может обнаруживать текст на вертикальных и многоязычных изображениях.
- Простой и понятный API.
Для установки 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 – это система оптического распознавания символов с открытым исходным кодом, разработанная 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
Вот пример на Python, который извлекает текст из изображения с использованием 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
Вот пример на Python, который извлекает текст из изображения с использованием библиотеки 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 от Amazon, который может анализировать документы и формы, извлекая текст с высокой точностью. Он интегрируется без проблем с другими сервисами 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/