使用 Tesseract 时出现符号查找错误

Symbol lookup error while using 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')

用户在 tesseract-ocr google 邮件组上发布了 this 错误:

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

得到 the answer

"undefined symbol" indicate a broken installation

不过正如我所说,这个版本是运行两个多月没有任何错误,所以tesseract安装应该没有问题。

另一位用户在群组中发布了 same problem,但没有人回复。

所以,我认为问题可能出在两个地方:

  1. 在提供给 tesseract 的图像中。
  2. 超立方体内。

图片可能完全不是图片!也就是说,它可能有 0x0 维(尽管考虑到图像的构建过程这是不可能的)。但这是不可能的,因为我得到的错误是:

SystemError: tile cannot extend outside image

当我尝试我的假设时。

这意味着图像存在,所以 tesseract 应该有效。

这也意味着问题出在Tesseract内部。我不是 tesseract 内部工作的专家,但考虑到这个版本直到现在都能正常工作并且输入图像没有问题,Tesseract 可能有什么问题?

P.S:我目前不在运行脚本的系统附近,但我知道发生的错误。我可能无法提供有关系统的确切细节,因此我希望对问题进行假设。

P.S: 脚本是here.

这是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(延伸)(也适用于 9.9)截至 2019 年 6 月.

当 tesseract 停止工作时 "all of a sudden",我不得不

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 install tesseract-ocr

对我有用

清除,然后重新安装解决了我的问题:

sudo apt-get purge libtesseract4 tesseract-ocr

这将删除以下软件包:

libtesseract-dev*、libtesseract4*、tesseract-ocr*

sudo apt-get install libtesseract-dev tesseract-ocr

这将安装以下软件包:

libtesseract-dev、libtesseract4、tesseract-ocr