从昨天开始我试图使用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
答案 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程序都接受正斜杠。有些人不这样做,偶尔你需要一个\\.\
路径名,这个路径名在正斜杠方面是不合法的,但除此之外,这是有效的。