Ошибка поиска символа при использовании Tesseract
Я использую Tesseract 4 для проекта уже более двух месяцев. (Это означает, что он работает на входных изображениях более двух месяцев.) Проблема, которую я показываю, заключается в следующем:
multiprocess.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "/home/cse/.local/lib/python3.5/site-packages/multiprocess/pool.py", line 119, in worker
result = (True, func(*args, **kwds))
File "/home/cse/.local/lib/python3.5/site-packages/multiprocess/pool.py", line 44, in mapstar
return list(map(*args))
File "/home/cse/.local/lib/python3.5/site-packages/pathos/helpers/mp_helper.py", line 15, in <lambda>
func = lambda args: f(*args)
File "UKExtraction2.py", line 267, in tessBox
op = pt.image_to_string(box[0],lang='hin+eng',config='--psm 6')
File "/home/cse/.local/lib/python3.5/site-packages/pytesseract/pytesseract.py", line 286, in image_to_string
return run_and_get_output(image, 'txt', lang, config, nice)
File "/home/cse/.local/lib/python3.5/site-packages/pytesseract/pytesseract.py", line 194, in run_and_get_output
run_tesseract(**kwargs)
File "/home/cse/.local/lib/python3.5/site-packages/pytesseract/pytesseract.py", line 170, in run_tesseract
raise TesseractError(status_code, get_errors(error_string))
pytesseract.pytesseract.TesseractError: (127, 'tesseract: symbol lookup error: tesseract: undefined symbol: _ZN9tesseract15TessPDFRendererC1EPKcS2_b')
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "UKExtraction2.py", line 855, in <module>
doItAllUpper("A0","UK4.csv","temp",27,70,"box",2,1000,firstPageCoordsUK,boxCoordUK,voterBoxCoordUK,internalBoxNumberCoordUK,externalBoxNumberCoordUK,addListInfoUK)
File "UKExtraction2.py", line 776, in doItAllUpper
doItAll(tempPDFName,outputCSV,2,pdfs,formatType,n_blocks,writeBlockSize,firstPageCoords,boxCoord,voterBoxCoord,internalBoxNumberCoord,externalBoxNumberCoord,addListInfo,pdfName)
File "UKExtraction2.py", line 617, in doItAll
mainProcess(pdfName,(0,noOfPages-1),formatType,n_blocks,outputCSV,writeBlockSize,firstPageCoords,boxCoord,voterBoxCoord,internalBoxNumberCoord,externalBoxNumberCoord,addListInfo,bigPDFName,basePages)
File "UKExtraction2.py", line 563, in mainProcess
names_lst = cropAndOCR(im,(tup[0],tup[1]),formatType,boxCoord,voterBoxCoord,externalBoxNumberCoord,n_blocks,basePages)# Add the values of fpageInfo
File "UKExtraction2.py", line 416, in cropAndOCR
results = pool.map(tessBox,box_lst_divided)
File "/home/cse/.local/lib/python3.5/site-packages/pathos/multiprocessing.py", line 137, in map
return _pool.map(star(f), zip(*args)) # chunksize
File "/home/cse/.local/lib/python3.5/site-packages/multiprocess/pool.py", line 266, in map
return self._map_async(func, iterable, mapstar, chunksize).get()
File "/home/cse/.local/lib/python3.5/site-packages/multiprocess/pool.py", line 644, in get
raise self._value
pytesseract.pytesseract.TesseractError: (127, 'tesseract: symbol lookup error: tesseract: undefined symbol: _ZN9tesseract15TessPDFRendererC1EPKcS2_b')
pathos
Часть из-за того, что проект использует два потока для работы. Важной частью является:
pytesseract.pytesseract.TesseractError: (127, 'tesseract: symbol lookup error: tesseract: undefined symbol: _ZN9tesseract15TessPDFRendererC1EPKcS2_b')
Пользователь, опубликовавший сообщение об этой ошибке в почтовой группе Google tesseract-ocr:
combine_tessdata: symbol lookup error: combine_tessdata: undefined symbol: _Z7tprintfPKcz
И получил ответ, который
"неопределенный символ" указывает на сломанную установку
Но, как я уже сказал, эта версия работает без ошибок более двух месяцев, поэтому проблем с установкой tesseract не должно быть.
Другой пользователь опубликовал ту же проблему в группе, но никто не ответил.
Итак, я предположил, что проблема может быть в двух местах:
- На изображении предоставлен тессеракт.
- Внутри тессеракт.
Изображение может не быть изображением вообще! То есть он может иметь размеры 0x0 (хотя это невозможно, учитывая процесс построения изображения). Но это невозможно, потому что я получил ошибку:
SystemError: tile cannot extend outside image
Когда я попробовал свою гипотезу.
Это означает, что изображение присутствовало, поэтому тессеракт должен был работать.
Это также означает, что проблема внутри Тессеракта. Я не эксперт по внутренней работе tesseract, но учитывая тот факт, что эта версия работала до сих пор правильно и нет проблем с входным изображением, что может быть проблемой с Tesseract?
PS: я сейчас не рядом с системой, которая запускает скрипт, но я знаю об ошибке, которая произошла. Возможно, я не смогу дать точную информацию о системе, поэтому я ожидаю гипотезы для проблемы.
PS: сценарий здесь.
4 ответа
Вот решение для Ubuntu 18.04
Пожалуйста, сначала установите библиотеки, которые необходимы для tesseract-ocr
sudo apt install libtesseract-dev libleptonica-dev liblept5
Затем просто установите tesseract с помощью команды
sudo apt install tesseract-ocr -y
Отправлено как ответ вместо комментария, чтобы можно было вносить изменения.
На Debian GNU / Linux 9.6 (stretch) (также работал над 9.9) по состоянию на июнь 2019 года.
Когда tesseract перестал работать "внезапно", мне пришлось
sudo apt-get purge libtesseract4 tesseract-ocr
а затем переустановите их снова (через бэкпорт, поскольку они не были доступны в стабильном канале):
sudo apt-get install -t stretch-backports tesseract-ocr
В моем случае очень важно было переустановить libtesseract4, иначеsymbol lookup error: tesseract: undefined symbol
продолжал показывать.
Очистка с последующей повторной установкой устранила проблему в моем случае:
sudo apt-get purge libtesseract4 tesseract-ocr
Это удаляет следующие пакеты:
libtesseract-dev*, libtesseract4*, тессеракт-окр *
sudo apt-get install libtesseract-dev tesseract-ocr
Это устанавливает следующие пакеты:
libtesseract-dev, libtesseract4, тессеракт-окр