Ошибка поиска символа при использовании Tesseract - PullRequest
0 голосов
/ 23 сентября 2018

Я использую 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')

Пользователь, опубликовавший сообщение об ошибке this в почтовой группе Google tesseract-ocr:

combine_tessdata: symbol lookup error: combine_tessdata: undefined symbol: _Z7tprintfPKcz

И получил ответ о том, что

«неопределенный символ» указывает на неисправную установку

Но, как я уже сказал, эта версия работает без ошибок более двух месяцев, поэтомуне должно быть никаких проблем с установкой tesseract.

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

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

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

Изображение может быть не совсем изображением!То есть он может иметь размеры 0x0 (хотя это невозможно, учитывая процесс построения изображения).Но это невозможно, потому что я получил ошибку:

SystemError: tile cannot extend outside image

Когда я попробовал свою гипотезу.

Это означает, что изображение присутствовало, поэтому тессеракт должен был сработать.

Это также означает, что проблема внутри Тессеракта.Я не эксперт по внутренней работе Тессеракта, но учитывая тот факт, что эта версия работала до сих пор правильно и нет проблем с входным изображением, в чем может быть проблема с Тессерактом?

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

PS: сценарий здесь .

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Опубликовано в качестве ответа вместо комментария, чтобы иметь возможность вносить изменения.

Вкл. Debian GNU / Linux 9.6 (растяжение) (также работало в 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 продолжал бы показывать.

0 голосов
/ 04 апреля 2019

Вот решение для Ubuntu 18.04

Сначала установите библиотеки, необходимые для tesseract-ocr

sudo apt install libtesseract-dev libleptonica-dev liblept5

Затем просто установите tesseract с помощью команды

sudo apt install tesseract-ocr -y
...