首页 > 解决方案 > 通过子进程 python 调用时,tesseract 不显示任何输出

问题描述

我试图使用子进程从 python 中的 tesseract 读取验证码,但它给出的乱码输出为

p = subprocess.Popen(['tesseract', 'CAPT1.png','stdout','-l','eng','--oem 3','--psm 7','>>','nm.txt'], stdout=subprocess.PIPE)
p.communicate()
Out : (b' \n\x0c', None)

尝试过 decon 仍然没有运气:-

print (stdout.decode('utf-8'))
Out : ' \n\x0c'

甚至 pytesseract 也没有给出任何输出:

import pytesseract
ocr = pytesseract.image_to_string(Image.open('CAPT1.png'), lang='eng', \
        config='eng --psm 7 --oem 3')
print (ocr)
Out :

而在 linux 中从命令行调用相同的 tesseract 时会给出正确的输出

tesseract CAPT1.png stdout -l eng --oem 3 --psm 7
Out: X8ZUZ4

标签: pythonimage-processingtesseract

解决方案


通过hack解决,只需将命令复制到shell脚本中并在笔记本中执行为

!sh 测试.sh


推荐阅读