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 зависит не только от модели, но и от множества других факторов, таких как четкость, оттенки серого изображения, гиперпараметр, заданный весовой возраст и т. д.

Спасибо.

Ссылки