Как настроить pytesseract для поддержки обнаружения текста для неанглийского языка в Windows 10?

#python #computer-vision #tesseract #python-tesseract

#python #компьютерное зрение #tesseract #python-tesseract

Вопрос:

Я пробовал pytesseract для English . Он работает нормально и дает ожидаемый результат. Но когда речь идет о других языках (например, арабском), отличных от английского, это не удается сделать и выдает следующую ошибку:

 TesseractError: (1, 'Error opening data file C:\Program Files (x86)\Tesseract-OCR\ara.traineddata 
Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory. 
Failed loading language 'ara' Tesseract couldn't load any languages! 
Could not initialize tesseract.')
 

Пытался выполнить это ( ara.traineddata ) из github , но не могу это сделать.

Комментарии:

1. что означает, что вы не можете скачать с github?

2. Я нашел страницу Traineddata Files для версии 4.00 , и там есть ссылка, по ara.traineddata которой я могу скачать. Я не тестировал этот файл с помощью tesseract

3. после загрузки я могу сделать tesseract image.png output-file --tessdata-dir folder/with/files/tessdata/ -l ara

4. Сделал согласно developpaper.com /… и установил testerocr и tesserocr . И теперь pytesseract не создает никаких ошибок, а также не генерирует никаких выходных данных. Просто делает clearscreen из python_console. Вместо pytesseract только tesserocr мог выполнять эту работу.

5. pytesseract просто выполните команду, например tesseract image.png output-file ... , чтобы она также могла получать аргументы типа --tessdata-dir — возможно, как словарь с дополнительными опциями

Ответ №1:

pytesseract есть только оболочка в программе tesseract (OCR, разработанная Google)

tesseract нужны файлы с языками, которые вы можете найти в его документации: файлы данных.

Вы можете загрузить ara.traineddata в какую-либо папку и запустить ее с опцией --tessdata-dir some_folder , а затем она будет использоваться ara.traineddata из этой папки.

Если вы сохраняете ara.traineddata в той же папке, в которой выполняете код, вы можете использовать . (точка)

 tesseract image.jpg stdout -l ara --tessdata-dir .
 

И то же самое вы можете сделать, pytesseract используя config=

 import pytesseract

text = pytesseract.image_to_string('image.jpg', lang='ara', config='--tessdata-dir .')

print(text)
 

В конце концов, вы можете использовать переменную среды TESSDATA_PREFIX для этого

 import pytesseract
import os

os.environ['TESSDATA_PREFIX'] = '.'

text = pytesseract.image_to_string('text-ara.jpg', lang='ara')

print(text)
 

Позже вы можете установить TESSDATA_PREFIX непосредственно в системе или попытаться перейти ara.traineddata в папку с другими файлами .traineddata . Должно быть где eng.traineddata -то, что вы можете попытаться найти с помощью программ / команд, таких как find


Я протестировал его с помощью этого изображения, которое я нашел также в документации: Использование командной строки

введите описание изображения здесь


Кстати: tesseract обычно текст сохраняется в файле, но если вы используете stdout , он отображает текст в консоли.