Ошибка поиска символа при использовании 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 не должно быть.

Другой пользователь опубликовал ту же проблему в группе, но никто не ответил.

Итак, я предположил, что проблема может быть в двух местах:

  1. На изображении предоставлен тессеракт.
  2. Внутри тессеракт.

Изображение может не быть изображением вообще! То есть он может иметь размеры 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, тессеракт-окр

sudo apt-get install tesseract-ocr

работал на меня

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