文档章节

pytesser模块WindowsError错误解决方法

j_hao104
 j_hao104
发布于 2017/11/23 12:20
字数 371
阅读 13
收藏 0

在使用pytesser做图片文字识别时遇到 WindowsError: [Error 2] 错误,报错内容如下:

Traceback (most recent call last):
  File "E:/Code/Captcha/ChinaMobileEC/recogCaptcha.py", line 37, in <module>
    print pytesser.image_to_string(out)
  File "E:\Code\Captcha\pytesser\pytesser.py", line 36, in image_to_string
    call_tesseract(scratch_image_name, scratch_text_name_root)
  File "E:\Code\Captcha\pytesser\pytesser.py", line 25, in call_tesseract
    proc = subprocess.Popen(args)
  File "C:\Python27\lib\subprocess.py", line 710, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
    startupinfo)
WindowsError: [Error 2] 

WindowsError: [Error 2] 的意思是系统找不到指定的文件。

查看pytesser中的代码,其实就是一个调用 tesseract.exe 识别图片的过程,其中代码如下:

tesseract_exe_name = 'tesseract'

def call_tesseract(input_filename, output_filename):
    """Calls external tesseract.exe on input file (restrictions on types),
    outputting output_filename+'txt'"""
    args = [tesseract_exe_name, input_filename, output_filename]
    proc = subprocess.Popen(args)
    retcode = proc.wait()
    if retcode != 0:
        errors.check_for_errors()

就是调用 subprocess.Popen() 执行 tesseract input_filename output_filename, 这样会将识别结果写到out_filename的txt文件。这条命令你可以直接在cmd中到 tesseract.exe 目录下运行,也能看到识别结果。pytesser其实就是调用这个命令识别,然后读取结果返回。

所以上面错误中所说的找不到的文件就是指 tesseract.exe。所以解决这个问题的方法有两种:

第一种时将 tesseract.exe 所在路径添加到搜索路径,这样无论在哪儿执行 tesseract 系统都能找到。

第二种是修改 pytesser 中的代码, 将 tesseract 换成绝对路径即可:

import os

pwd = os.path.dirname(__file__)

# 将原来的 tesseract_exe_name='tesseract' 改成绝对路径
tesseract_exe_name = os.path.join(pwd,'tesseract')

博客地址:http://www.spiderpy.cn/blog/detail/35

© 著作权归作者所有

共有 人打赏支持
j_hao104
粉丝 202
博文 67
码字总数 101848
作品 2
程序员
linux下安装使用pytesser,图片文本识别

pytesser是一个用于图片文本识别的python模块:http://code.google.com/p/pytesser/,即从文本的截图中还原出文本信息; 网上在windows上安装、使用的资料比较多,而没有linux的资料; 作者虽...

鉴客
2012/06/28
8.7K
3
Python验证码识别:利用pytesser识别简单图形验证码

一、探讨 识别图形验证码可以说是做爬虫的必修课,涉及到计算机图形学,机器学习,机器视觉,人工智能等等高深领域…… 简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形...

j_hao104
2016/03/25
13.4K
1
博客园目录

table标签中thead、tbody、tfoot的作用http://www.cnblogs.com/zhouxinfei/p/8001510.html python selenium模拟滑动操作http://www.cnblogs.com/zhouxinfei/p/8001506.html Selenium webdriv......

_周小董
2017/12/09
0
0
批量重命名文件——python实现

任务很简单,某个目录下面有几千个文件,某些文件没有后缀名,现在的任务就是将所有的没有后缀名的文件加上后缀名,python有现成的函数可以实现,但是在实现过程中遇到几个问题,分享一下解决...

jingshishengxu
2012/09/07
0
0
python 与windows

在Python程序中导入ctypes模块,载入动态链接库。动态链接库有三种:cdll以及windows下的windll和oledll,cdll载入导出函数使用标准的cdecl调用规范的库,而windll载入导出函数符合stdcall调...

idoz
2015/05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring详解

Spring详解(一)------概述 目录 1、什么是 Spring ? 2、Spring 起源 3、Spring 特点 4、Spring 框架结构 5、Spring 框架特征 6、Spring 优点   本系列教程我们将对 Spring 进行详解的介绍...

DemonsI
23分钟前
0
0
CentOS7系统Nginx安装

1、下载nginx,官方网站https://nginx.org wget https://nginx.org/download/nginx-1.14.0.tar.gz 2、下载Nginx Sticky Module,官方网站https://bitbucket.org/nginx-goodies/nginx-sticky-......

m_lm
26分钟前
0
0
使用zTree树控件(二)

1:treeNode.checked用于判断是勾选还是取消勾选。(treeNode指的是节点) 2:treeObj.transformToArray(nodes)用于查询nodes节点下的所有子节点,json格式。(treeObj为数的id)...

uug
27分钟前
0
0
export, import 和 export default的区别

ES6的两个功能: export 和 import export 对外输出模块 import 引入(加载)进来一个模块 一、export => import 单个变量 export var name = "lishi" 在其他文件里引用 import {name} f...

Js_Mei
32分钟前
1
0
打造RecyclerView的n级列表

先上效果图: 1.该多级列表的优势: 支持无限级列表展开 基于一个recyclerView实现 可以自定义每一级item的样式,定制化更强 2.设计的思路 数据结构List<ItemBean>,ItemBean类中有变量List<...

WelliJohn
41分钟前
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部