Вопрос-Ответ

Pytesseract OCR multiple config options

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

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

Вот так:

target = pytesseract.image_to_string(im,config='-psm 7',config='outputbase digits')
Переведено автоматически
Ответ 1

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')
Ответ 2

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


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



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



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



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



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



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



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



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



  9. Обрабатывайте изображение как одно слово.



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



  11. Обрабатывайте изображение как один символ.



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



  13. Разреженный текст с помощью экранного меню.



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



Режимы работы механизма распознавания:


  1. Только устаревший движок.

  2. Только движок LSTM для нейронных сетей.

  3. Устаревшие движки + LSTM.

  4. По умолчанию, в зависимости от того, что доступно.

Ответ 3

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

Ответ 4

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 пикселей с одним символом

python