Pytesseract OCR несколько параметров конфигурации

У меня есть некоторые проблемы с pytesseract. Мне нужно настроить Tesseract так, чтобы он был настроен на прием однозначных цифр, а также возможность принимать только цифры, поскольку нулевое число часто путают с "О".

Как это:

target = pytesseract.image_to_string(im,config='-psm 7',config='outputbase digits')

Большое спасибо,

Найл

4 ответа

Решение

tesseract-4.0.0a поддерживает ниже psm, Если вы хотите иметь распознавание одного символа, установите psm = 10, И если ваш текст состоит только из цифр, вы можете установить tessedit_char_whitelist=0123456789,

Page segmentation modes:
  0    Orientation and script detection (OSD) only.
  1    Automatic page segmentation with OSD.
  2    Automatic page segmentation, but no OSD, or OCR.
  3    Fully automatic page segmentation, but no OSD. (Default)
  4    Assume a single column of text of variable sizes.
  5    Assume a single uniform block of vertically aligned text.
  6    Assume a single uniform block of text.
  7    Treat the image as a single text line.
  8    Treat the image as a single word.
  9    Treat the image as a single word in a circle.
 10    Treat the image as a single character.
 11    Sparse text. Find as much text as possible in no particular order.
 12    Sparse text with OSD.
 13    Raw line. Treat the image as a single text line,
                        bypassing hacks that are Tesseract-specific.

Вот пример использования image_to_string с несколькими параметрами.

target = pytesseract.image_to_string(image, lang='eng', boxes=False, \
        config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')

Надеюсь это поможет.

Режимы сегментации страницы:

  1. Только ориентация и обнаружение сценария (OSD).

  2. Автоматическая сегментация страниц с экранным меню.

  3. Автоматическая сегментация страниц, но без OSD или OCR. (не реализованы)

  4. Полностью автоматическая сегментация страниц, но без экранного меню. (По умолчанию)

  5. Предположим, что один столбец текста переменного размера.

  6. Предположим, что это единый однородный блок вертикально выровненного текста.

  7. Предположим, что это один однородный блок текста.

  8. Рассматривайте изображение как одну текстовую строку.

  9. Относитесь к изображению как к одному слову.

  10. Рассматривайте изображение как отдельное слово в круге.

  11. Относитесь к изображению как к одному символу.

  12. Редкий текст. Найдите как можно больше текста в произвольном порядке.

  13. Разрезанный текст с экранным меню.

  14. Необработанная линия. Относитесь к изображению как к одной текстовой строке, минуя хаки, специфичные для Tesseract.

Режимы OCR Engine:

  1. Только устаревший движок.
  2. Только движок нейронных сетей LSTM.
  3. Устаревшие движки + LSTM.
  4. По умолчанию, в зависимости от того, что доступно.

Причина, по которой у вас возникли проблемы, заключается в том, что в версии 4.0 не работает ограничение символов. Вы должны принудительно активировать устаревший режим (oem 0), чтобы ограничить количество найденных символов. Где-то в команде тессерактов есть ошибка, которую они еще не исправили.

Tesseract версии 5.0.0-alpha может использовать следующую команду: (используйте psm = 13 и oem = 1 или 3)

pytesseract.image_to_string(export_image ,lang='eng', config='--psm 13 --oem 1 -c tessedit_char_whitelist=ABCDEFG0123456789')

Обратите внимание, что engвзят обученный набор данных: https://github.com/tesseract-ocr/tessdata_fast/blob/master/eng.traineddata

Примечание: протестировано на двоичных входных изображениях +-60x60 пикселей с одним символом

Другие вопросы по тегам