OCR (Оптическое распознавание символов) – это технология, которая позволяет преобразовывать типы документов, такие как отсканированные бумажные документы, файлы PDF или изображения, сделанные цифровой камерой, в редактируемые и доступные для поиска данные. OCR создает слова из букв и предложения из слов, выбирая и отделяя буквы от изображений.
В этой статье мы сравниваем Keras OCR, PyTesseract и EasyOCR.
Если у вас нет никаких предварительных знаний, я могу порекомендовать это.
KERAS OCR:
Это слегка отшлифованная и упакованная версия реализации Keras CRNN и опубликованной модели обнаружения текста CRAFT. Он предоставляет высокоуровневый API для обучения конвейеру обнаружения текста и оптического распознавания символов.
Пакет поставляется с простой в использовании реализацией модели обнаружения текста CRAFT из этого репозитория и модели распознавания CRNN из этого репозитория.
Монтаж
pip install keras-ocr
Использование
Первая библиотека импорта:
import matplotlib.pyplot as plt import keras_ocr
keras-ocr автоматически загрузит предварительно обученные веса для детектора и распознавателя.
pipeline = keras_ocr.pipeline.Pipeline()
Получите набор из трех примеров images:
images = [ keras_ocr.tools.read(img) for img in ['path/img1.jpg', 'path/img2.jpg', 'path/img3.jpg']]
Каждый список прогнозов в prediction_gropus представляет собой список кортежей (слова, поля):
prediction_groups = pipeline.recognize(images)
Последний шаг - построить прогнозы:
fig, axs = plt.subplots(nrows=len(images), figsize=(20, 20)) for ax, image, predictions in zip(axs, images, prediction_groups): keras_ocr.tools.drawAnnotations(image=image, predictions=predictions, ax=ax)
EasyOCR
Готовое к использованию OCR с более чем 80 поддерживаемыми языками и всеми популярными сценариями письма, включая: латинский, турецкий, китайский и т. д.
Монтаж
pip install easyocr
Использование
Нам нужно сообщить EasyOCR, на каком языке мы хотим читать. Эта модель может читать несколько языков одновременно. Английский совместим со всеми языками. Языки, которые имеют большую часть общих символов (например, латинский алфавит) друг с другом, совместимы.
Итак, сначала мы должны выбрать язык. Вы можете получить доступ к доступному языку: поддерживаемые языки.
import easyocr reader = easyocr.Reader(['tr','en'])
Чтобы получить текст из изображения, просто передайте путь к изображению функции readtext
следующим образом.
result = reader.readtext(‘path/image.jpg’)
Вывод будет в формате списка, каждый элемент представляет ограничивающую рамку, обнаруженный текст и уровень достоверности соответственно.
([[482, 418], [633, 418], [633, 494], [482, 494]],'Text1',0.9577),
([[331, 421], [453, 421], [453, 487], [331, 487]], 'Text2', 0.9630),
([[653, 429], [769, 429], [769, 495], [653, 495]], 'Text3', 0.9243),
([[797, 429], [939, 429], [939, 497], [797, 497]],'Text4',0.6400)]
ПиТессеракт
Python-tesseract — это инструмент оптического распознавания символов (OCR) для Python. То есть он распознает и «прочитает» текст, встроенный в изображения.
Установка
pip install pytesseract
Использование
Импортировать библиотеки:
from PIL import Image import pytesseract
Простое изображение для строки:
print(pytesseract.image_to_string(Image.open('path/image1.jpg')))
СРАВНЕНИЕ ВСЕХ
Первый импорт библиотек и изображений.
import pytesseract import keras_ocr import easyocr import matplotlib.pyplot as plt import cv2 import numpy as np import pytesseract
Визуализация вашего образа
Создать класс OCR:
Вставьте нашу функцию load_img в конструктор. Как видите, мы распределяем наши модели с помощью функций ….._model_load().
Я также добавил несколько линий визуализации.
Давайте инициализируем объект ocr.
ocr=OCR(image_folder="test/")
Чтобы протестировать Keras OCR
Вызов метода keras_model_works()
ocr.keras_ocr_works()
Чтобы протестировать Easy OCR
Вызвать метод easyocr_model_works()
ocr.easyocr_model_works()
TR 414 DK 205
(DUR
THE RAINBCW FONT ABCDEFGHIJKLMN OPQRSTUVWXYZ
illisgois LanoLLincoln American Super Cars APR 568 612 M '89IL MAR 82tui MoToRShOW TEXAS @ Arizona RY RK 611 BUc |KB5]9 Grano camyom staten XAS MY TRUCK HZK THE LONE 5{
BARTIN 74 Nufus: 66100 Rakım: 2 5 Sınırı Bölgesi 50 Hız
Alergico
Тестировать Питессеракт
Вызов метода pytesseract_model_works()
ocr.pytesseract_model_works()
3 изображения не имеют результатов.
ABCDEFGHIJKLM OPQRSTUVWKXYZ
BARTIN Nuifus: 66100]! Rakim: Pipe)
Alergico
ВЫВОДЫ
- Кажется, что pytesseract не очень хорошо распознает текст на всем изображении и конвертирует str. Вместо этого текст должен быть обнаружен первым с помощью обнаружения текста, а тексты должны быть заданы механизмами OCR.
- В то время как keras_ocr хорош с точки зрения точности, но требует больших затрат времени. Кроме того, если вы используете ЦП, время может быть проблемой для вас.
- Keras-OCR — это инструмент распознавания изображений для конкретных изображений. Если текст находится внутри изображения, а их шрифты и цвета не организованы.
- Easy-OCR — это облегченная модель, обеспечивающая хорошую производительность при конвертации чеков или PDF. Это дает более точные результаты с организованными текстами, такими как файлы PDF, квитанции, счета. Easy OCR также хорошо справляется с зашумленными изображениями.
- Pytesseract хорошо работает с изображениями с высоким разрешением. Некоторые морфологические операции, такие как дилатация, эрозия, бинаризация OTSU, могут помочь увеличить производительность питессеракта.
- Все эти результаты можно дополнительно улучшить, выполнив определенные операции с изображением.
- Прогноз OCR зависит не только от модели, но и от множества других факторов, таких как четкость, оттенки серого изображения, гиперпараметр, заданный весовой возраст и т. д.
Спасибо.
Ссылки