使用Tesseract

时间:2018-09-23 07:58:38

标签: python tesseract python-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

  

“未定义符号”表示安装已损坏

但是正如我所说的,该版本运行了两个多月没有出现任何错误,因此tesseract安装应该不会有任何问题。

另一位用户在该论坛上发布了same problem,但没有人回答。

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

  1. 在提供给tesseract的图像中。
  2. tesseract内部。

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

SystemError: tile cannot extend outside image

当我尝试我的假设时。

这意味着存在图像,因此tesseract应该起作用。

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

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

P.S:脚本为here

4 个答案:

答案 0 :(得分:2)

以下是ubuntu 18.04的解决方案

请先安装tesseract-ocr所需的库

sudo apt install libtesseract-dev libleptonica-dev liblept5

然后只需使用命令安装tesseract

sudo apt install tesseract-ocr -y

答案 1 :(得分:0)

发布为答案而不是评论,以便进行修改。

截至 2019年6月 Debian GNU / Linux 9.6(拉伸)(也适用于9.9)。

当tesseract突然停止工作时,我不得不

sudo apt-get purge libtesseract4 tesseract-ocr

,然后重新安装它们(通过backport重新安装,因为稳定通道中不可用):

sudo apt-get install -t stretch-backports tesseract-ocr 

对于我而言,至关重要的是重新安装libtesseract4 ,否则symbol lookup error: tesseract: undefined symbol会一直显示。

答案 2 :(得分:0)

<块引用>

sudo apt-get install tesseract-ocr

为我工作

答案 3 :(得分:0)

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

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