Изучение сегментации Tesseract и режимов движка: подробное руководство

Tesseract – это механизм оптического распознавания символов (OCR) с открытым исходным кодом, который широко используется для извлечения текста из изображений. Он предоставляет различные методы сегментации и режимы работы, которые могут значительно повысить точность и производительность задач распознавания текста. В этой статье мы углубимся в различные методы сегментации и режимы движка, доступные в Tesseract, а также приведем примеры кода, иллюстрирующие их использование.

  1. Методы сегментации:
    1.1. Режимы сегментации страниц:
    Tesseract предлагает различные режимы сегментации страниц, которые определяют, как механизм OCR интерпретирует и сегментирует входное изображение. Вот некоторые часто используемые режимы:
  • Режим 0: только ориентация и обнаружение сценариев (OSD).
  • Режим 1: автоматическая сегментация страниц с помощью экранного меню.
  • Режим 3: полностью автоматическая сегментация страниц, но без экранного меню и оптического распознавания символов.
  • Режим 4: предполагается, что один столбец текста имеет переменный размер.
  • Режим 7: рассматривайте изображение как одну текстовую строку.
  • Режим 11: Разреженный текст. Найдите как можно больше текста в произвольном порядке.
  • Режим 13: необработанная линия. Рассматривайте изображение как одну текстовую строку, минуя хаки, специфичные для Tesseract.

Вы можете установить режим сегментации страницы с помощью параметра командной строки --psmили программно в коде.

  1. Режимы двигателя:
    2.1. Режим LSTM:
    Tesseract представил новый механизм оптического распознавания символов, основанный на сетях долгосрочной краткосрочной памяти (LSTM), который значительно повышает точность, особенно для сложных скриптов и языков. Чтобы включить режим LSTM, установите для параметра --oemзначение 1.

2.2. Режим Legacy Engine:
В режиме Legacy Engine (oem=0) используется традиционный механизм OCR Tesseract, основанный на скрытых марковских моделях (HMM). Хотя он может не обеспечивать такую ​​же точность, как LSTM, он может быть быстрее и подходит для более простых задач распознавания текста.

Примеры кода:
Давайте посмотрим, как использовать методы сегментации и режимы движка Tesseract в Python:

import pytesseract
from PIL import Image
# Set the page segmentation mode
custom_config = r'--psm 7'  # Treat the image as a single text line
text = pytesseract.image_to_string(Image.open('image.png'), config=custom_config)
print(text)
# Set the engine mode to LSTM
custom_config = r'--oem 1'
text = pytesseract.image_to_string(Image.open('image.png'), config=custom_config)
print(text)

Методы сегментации и режимы ядра Tesseract обеспечивают гибкость и повышенную точность при решении задач распознавания текста. Понимая и используя эти методы, вы можете оптимизировать результаты оптического распознавания символов в соответствии с вашими конкретными требованиями. Поэкспериментируйте с различными режимами сегментации страниц и режимами механизма, чтобы найти наиболее подходящую конфигурацию для вашего случая использования.