使用 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,但没有人回复。
所以,我认为问题可能出在两个地方:
- 在提供给 tesseract 的图像中。
- 超立方体内。
图片可能完全不是图片!也就是说,它可能有 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
我已经将 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,但没有人回复。
所以,我认为问题可能出在两个地方:
- 在提供给 tesseract 的图像中。
- 超立方体内。
图片可能完全不是图片!也就是说,它可能有 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