博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python - pytesseract 机器视觉
阅读量:6533 次
发布时间:2019-06-24

本文共 4568 字,大约阅读时间需要 15 分钟。

机器视觉  - tesseract ( 验证码 )

安装

Ubuntu

sudo apt-get install tesseract-ocr

Windows

下载安装包

添加环境变量(Path) :搜索 环境变量

测试

终端 :tesseract xx.jpg 文件名

pytesseract 

识别成功率取决你的 tessdata 的质量

自带的质量就很炸, 所以基本上没什么用

安装

sudo pip3 install pytesseract

 

简单使用

import pytesseract# python 标准化图片处理组件from PIL import Image# 创建图片对象img = Image.open('yzm1.jpg')# 图片转字符串r = pytesseract.image_to_string(img)print(r)

 

在线打码平台

tesseract-ocr 识别率有点辛苦, 因此不太实用

使用在线打码会性价比高一点

在线打码, 云打码

网址

官方文档 

import http.client, mimetypes, urllib, json, time, requests######################################################################class YDMHttp:    apiurl = 'http://api.yundama.com/api.php'    username = ''    password = ''    appid = ''    appkey = ''    def __init__(self, username, password, appid, appkey):        self.username = username        self.password = password        self.appid = str(appid)        self.appkey = appkey    def request(self, fields, files=[]):        response = self.post_url(self.apiurl, fields, files)        response = json.loads(response)        return response    def balance(self):        data = {
'method': 'balance', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey} response = self.request(data) if (response): if (response['ret'] and response['ret'] < 0): return response['ret'] else: return response['balance'] else: return -9001 def login(self): data = {
'method': 'login', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey} response = self.request(data) if (response): if (response['ret'] and response['ret'] < 0): return response['ret'] else: return response['uid'] else: return -9001 def upload(self, filename, codetype, timeout): data = {
'method': 'upload', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey, 'codetype': str(codetype), 'timeout': str(timeout)} file = {
'file': filename} response = self.request(data, file) if (response): if (response['ret'] and response['ret'] < 0): return response['ret'] else: return response['cid'] else: return -9001 def result(self, cid): data = {
'method': 'result', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey, 'cid': str(cid)} response = self.request(data) return response and response['text'] or '' def decode(self, filename, codetype, timeout): cid = self.upload(filename, codetype, timeout) if (cid > 0): for i in range(0, timeout): result = self.result(cid) if (result != ''): return cid, result else: time.sleep(1) return -3003, '' else: return cid, '' def report(self, cid): data = {
'method': 'report', 'username': self.username, 'password': self.password, 'appid': self.appid, 'appkey': self.appkey, 'cid': str(cid), 'flag': '0'} response = self.request(data) if (response): return response['ret'] else: return -9001 def post_url(self, url, fields, files=[]): for key in files: files[key] = open(files[key], 'rb'); res = requests.post(url, files=files, data=fields) return res.text####################################################################### 用户名username = 'username'# 密码password = 'password'# 软件ID,开发者分成必要参数。登录开发者后台【我的软件】获得!appid = 1# 软件密钥,开发者分成必要参数。登录开发者后台【我的软件】获得!appkey = '22cc5376925e9387a23cf797cb9ba745'# 图片文件filename = 'getimage.jpg'# 验证码类型,# 例:1004表示4位字母数字,不同类型收费不同。请准确填写,否则影响识别率。在此查询所有类型 http://www.yundama.com/price.htmlcodetype = 1004# 超时时间,秒timeout = 60# 检查if (username == 'username'): print('请设置好相关参数再测试')else: # 初始化 yundama = YDMHttp(username, password, appid, appkey) # 登陆云打码 uid = yundama.login(); print('uid: %s' % uid) # 查询余额 balance = yundama.balance(); print('balance: %s' % balance) # 开始识别,图片路径,验证码类型ID,超时时间(秒),识别结果 cid, result = yundama.decode(filename, codetype, timeout); print('cid: %s, result: %s' % (cid, result))######################################################################

 

转载于:https://www.cnblogs.com/shijieli/p/10846393.html

你可能感兴趣的文章
C#中用ILMerge将所有引用的DLL打成一个DLL文件
查看>>
PHP生成HTML静态页面
查看>>
服务器启动django
查看>>
Makefile 中:= ?= += =的区别【转】
查看>>
使用makecontext实现用户线程【转】
查看>>
Comet:基于 HTTP 长连接的“服务器推”技术
查看>>
BZOJ 2733: [HNOI2012]永无乡 启发式合并treap
查看>>
四种方法校验数组中是否包含某个指定的字符串
查看>>
29、Java并发性和多线程-非阻塞算法
查看>>
安装OpenResty开发环境
查看>>
第0课 从0开始
查看>>
python class和class(object)用法区别
查看>>
hadoop无法启动DataNode问题
查看>>
java泛型中<?>和<T>区别
查看>>
这里是指推送通知跟NSNotification有区别:
查看>>
Linux中断(interrupt)子系统之一:中断系统基本原理【转】
查看>>
用户ID的代码生成
查看>>
win7经常出现“关闭xxxx前您必须关闭所有会话框”
查看>>
SNMP安全配置的两种方法(也可同一时候兼顾配置两种方法)
查看>>
react-native 常见操作 及 git 补充
查看>>