pytesser subprocess.Popen失败

时间:2015-05-05 19:01:38

标签: python ocr pytesser

从昨天开始我试图使用OCR pytesser。 我自己解决了一些问题,但我想知道如何骑这个问题。 有错误:

H:\Python27>python.exe lol.py
Traceback (most recent call last):
File "lol.py", line 30, in <module>
print image_to_string(image)
File "H:\Python27\lib\pytesser\__init__.py", line 30, in image_to_string
call_tesseract(scratch_image_name, scratch_text_name_root)
File "H:\Python27\lib\pytesser\__init__.py", line 20, in call_tesseract
proc = subprocess.Popen(args)
File "H:\Python27\lib\subprocess.py", line 710, in __init__
errread, errwrite)
File "H:\Python27\lib\subprocess.py", line 958, in _execute_child
 startupinfo)
WindowsError: [Error 2] Le fichier spÚcifiÚ est introuvable

最后一行说“文件无法找到”

我将如何将tesseract放入 init .py

tesseract_exe_name = 'C:\Users\TyLo\AppData\Local\Tesseract-OCR\tesseract' # Name of executable to be called at command line

我真的无法弄清楚为什么他无法打开文件。在我的 init .py中还有另外两件事。我可以更改图像文件和txt文件,我试图创建我的并给他路径没有成功,但我认为他自己创建它们。

scratch_image_name = "outfile.bmp" # This file must be .bmp or other Tesseract-compatible format
scratch_text_name_root = "infile" # Leave out the .txt extension

这是发送给Popen的3个文件,所以我想错误就在那里。

我希望我能够清楚地了解我所遇到的问题。

编辑:lol.py中的内容来自此网站,只是修改了网址http://www.debasish.in/2012/01/bypass-captcha-using-python-and.html

1 个答案:

答案 0 :(得分:3)

这是问题所在:

tesseract_exe_name = 'C:\Users\TyLo\AppData\Local\Tesseract-OCR\tesseract' # Name of executable to be called at command line

在那里查看\t?这是一个制表符,而不是反斜杠字符和t字符。而且您只能使用\U\T\A\L\T,因为您很幸运,没有人想到它们的用途当你的Python版本问世时。 (更高版本的Python do 实际上可用于\U。)

解决方案是执行以下操作之一:

(1)使用raw string literal

tesseract_exe_name = r'C:\Users\TyLo\AppData\Local\Tesseract-OCR\tesseract' # Name of executable to be called at command line

r'…'表示“不要特别处理反斜杠”。

(2)逃离所有反斜杠:

tesseract_exe_name = 'C:\\Users\\TyLo\\AppData\\Local\\Tesseract-OCR\\tesseract' # Name of executable to be called at command line

在非原始字符串文字中,\\表示单个反斜杠,因此\\t表示单个反斜杠和t

(3)改为使用正斜杠:

tesseract_exe_name = 'C:/Users/TyLo/AppData/Local/Tesseract-OCR/tesseract' # Name of executable to be called at command line

大多数Windows程序都接受正斜杠。有些人不这样做,偶尔你需要一个\\.\路径名,这个路径名在正斜杠方面是不合法的,但除此之外,这是有效的。