百度AI接口(手写文字识别):https://ai.baidu.com/docs#/OCR-API/9ef46660

  实现效果:

      

  步骤一:接入接口

  进入上述网站申请账号,然后运行相关代码,获取 access_token 即算完成(由于百度json每30天更新一次,故代码中进行日期更新了的,如何获取accss_token也可见代码)

  

  步骤二:功能介绍:用户输入的图片路径可为网络上的url,也可为本机上的地址,为图省事,图片名称为 ValidateCode.jpg ,由于本人接入的的百度AI接口的手写文字识别,所以一般的验证码应该都可以通过,如果想加入其它功能,那么返回json数据就会有所改变,具体可以见API接口,本人是为了简化理解百度文档介绍

      request.urlretrieve(imagepath, 'ValidateCode.jpg') # 下载图片

    更新access_json:因为百度API规定:30天更新一次,所以我就把时间提前了。(别乱搞我的密钥呀,我也是为了分享呀QAQ)

 2   def accesjson():
flag = 0
fromtime = 1546061002 #起始时间
nowtime = int(time.time()) #2592000恰好为30天,故提前
if nowtime - fromtime > 2000000:
flag = 1
gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_' \
'type=client_credentials&client_id=Ooj730ZD0Rm7E1dmcPwoZX9s&client_secret=dr5T1icZGqK8ZFyTr4wi2AWbtNKMIsNd'
req = request.Request(host)
response = request.urlopen(req, context=gcontext).read().decode('UTF-8')
result = json.loads(response)
if flag == 1:
return result
else:
return None

    图片正式识别:注意,接入功能不一样,放回json数据不一样,具体看返回json就明白了

    

 #返回图片验证码
def vercode():
f = open('ValidateCode.jpg', 'rb')
img = base64.b64encode(f.read())
#不同百度API接口不一样,传递参数不一样,返回json也不一样
host = 'https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
#更换json
if accesjson() == None:
access_token = '24.18591b2e4c97956e0f830db9f66e5373.2592000.1548646630.282335-15301065'
else:
access_token = accesjson()
print('已更换最新json,欢迎继续使用!')
host = host + '?access_token=' + access_token data = {}
data['access_token'] = access_token
data['image'] = img
res = requests.post(url=host, headers=headers, data=data)
req = res.json()
return req['words_result'][0]['words']

    完整代码:目前可实现的功能就是网络上面的文字图片识别,或本机图片识别(和之前的抖音图片加载类似。)

    拓展:https://ai.qq.com/   (啥B腾讯的API接口,全是PHP,用都知道怎么用,凉凉。)

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/12/29 10:48
# @Author : Empirefree
# @File : 17-2-验证码.py
# @Software: PyCharm Community Edition import base64
import requests
from urllib import request
import os
import ssl
import json
import time
import re def IsHttp(imagepath):
if re.search('http', imagepath) != None:
return 1
else:
return 0 #下载验证码
def downloadpic(imagepath):
# imagepath = "http://210.42.38.26:84/jwc_glxt/ValidateCode.aspx"
if IsHttp(imagepath):
request.urlretrieve(imagepath, 'ValidateCode.jpg') # 下载图片 print(os.path.abspath('ValidateCode.jpg')) #百度限制,每30天更换一次access_json
def accesjson():
flag = 0
fromtime = 1546061002 #起始时间
nowtime = int(time.time()) #2592000恰好为30天,故提前
if nowtime - fromtime > 2000000:
flag = 1
gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_' \
'type=client_credentials&client_id=Ooj730ZD0Rm7E1dmcPwoZX9s&client_secret=dr5T1icZGqK8ZFyTr4wi2AWbtNKMIsNd'
req = request.Request(host)
response = request.urlopen(req, context=gcontext).read().decode('UTF-8')
result = json.loads(response)
if flag == 1:
return result
else:
return None #返回图片验证码
def vercode():
f = open('ValidateCode.jpg', 'rb')
img = base64.b64encode(f.read())
#不同百度API接口不一样,传递参数不一样,返回json也不一样
host = 'https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
#更换json
if accesjson() == None:
access_token = '24.18591b2e4c97956e0f830db9f66e5373.2592000.1548646630.282335-15301065'
else:
access_token = accesjson()
print('已更换最新json,欢迎继续使用!')
host = host + '?access_token=' + access_token data = {}
data['access_token'] = access_token
data['image'] = img
res = requests.post(url=host, headers=headers, data=data)
req = res.json()
return req['words_result'][0]['words'] def checkcode():
imagepath = input('请输入您的图片路径: ')
downloadpic(imagepath)
str = vercode()
return str if __name__ == '__main__': str = checkcode()
print(str)

Python-图片文字识别的更多相关文章

  1. python图片文字识别笔记

    我的环境为python3 坑比较多,在此做记录,以备查阅 命令行安装: pip install PIL pip install pytesseract pip install Pillow 下载tes ...

  2. Python人工智能之图片识别,Python3一行代码实现图片文字识别

    1.Python人工智能之图片识别,Python3一行代码实现图片文字识别 2.tesseract-ocr安装包和中文语言包 注意:

  3. python3 图片文字识别

    最近用到了图片文字识别这个功能,从网上搜查了一下,决定利用百度的文字识别接口.通过测试发现文字识别率还可以.下面就测试过程简要说明一下 1.注册用户 链接:https://login.bce.baid ...

  4. 小试Office OneNote 2010的图片文字识别功能(OCR)

    原文:小试Office OneNote 2010的图片文字识别功能(OCR) 自Office 2003以来,OneNote就成为了我电脑中必不可少的软件,它集各种创新功能于一身,可方便的记录下各种类型 ...

  5. 一篇文章搞定百度OCR图片文字识别API

    一篇文章搞定百度OCR图片文字识别API https://www.jianshu.com/p/7905d3b12104

  6. 刚破了潘金莲的身份信息(图片文字识别),win7、win10实测可用(免费下载)

    刚破了潘金莲的身份信息(图片文字识别),win7.win10实测可用 效果如下: 证照,车牌.身份证.名片.营业执照 等图片文字均可识别 电脑版 本人出品 大小1.3MB 下载地址:https://p ...

  7. 【图片识别】java 图片文字识别 ocr (转)

    http://www.cnblogs.com/inkflower/p/6642264.html 最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为 ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别

    Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...

  9. java 图片文字识别 ocr

    最近在开发的时候需要识别图片中的一些文字,网上找了相关资料之后,发现google有一个离线的工具,以下为java使用的demo 在此之前,使用这个工具需要在本地安装OCR工具: 下面一个是一定要安装的 ...

  10. JAVA的图片文字识别技术

    从2013年的记录看,JAVA中图片文字识别技术大部分采用ORC的tesseract的软件功能,后来渐渐开放了java-api调用接口. 图片文字识别技术,还是采用训练的方法.并未从根本上解决图片与文 ...

随机推荐

  1. Java课程寒假之开发记账本软件(网页版)之四

    一.实现基础功能之一(删除) 在删除的功能实现之前,要明白删除的条件是什么,一开始我是以去向和时间作为条件删除,但是删除的语句好像有问题,好像是因为出现了非法字符(应该是中文吧,不太清楚,因为这不是我 ...

  2. laravel的csrf token 的了解及使用

    之前在项目中因为没有弄清楚csrf token的使用,导致发请求的话,一直请求失败,今天就一起来看一下csrf的一些东西. 1.Cross-site request forgery 跨站请求伪造,也被 ...

  3. java学习之路--继承(子类构造器)

    子类的构造器不能访问父类的私有域,所以必须用的父类的构造器来对这部分的私有域进行初始化,我们可以通过super实现对父类的构造器的调用,使用super调用父类构造器的语句,必须放在子类构造器的第一句. ...

  4. swust oj 962

    括号匹配问题 1000(ms) 65535(kb) 3045 / 13375 假设表达式中允许包含两种括号:圆括号和方括号.编写一个算法判断表达式中的括号是否正确配对. 输入 由括号构成的字符串,包含 ...

  5. 爬虫IP代理中的http与https

    之前使用代理IP,构造的proxies一直都是http模式 proxies={"http": "http://{}".format(ip)} 但是今天遇到的网站 ...

  6. mac新手使用

    mac新手使用教程 B站上有个Mac云课堂

  7. 表驱动方法(Table-Driven Methods)

    表驱动方法(Table-Driven Methods) - winner_0715 - 博客园 https://www.cnblogs.com/winner-0715/p/9382048.html W ...

  8. emcc,wasm,webassembly

    WASM: https://github.com/Hanks10100/wasm-examples/tree/master/simple mkdir hello cd hello echo '#inc ...

  9. 获取子字符串函数MidStr

    MidStr返回指定范围内的字符串.该函数有三个参数.第一个参数为源字符串,第二个参数为起点(下标从1开始),第三个参数为结束点.通过第二.第三个参数则可指定要复制字符串的范围. function M ...

  10. 16.2-uC/OS-III同步 (事件标志组)

    事件标志组 1.当任务要与多个事件同步时可以使用事件标志.若其中的任意一个事件发生时任务被就绪, 叫做逻辑或(OR).若所有的事件都发生时任务被就绪,叫做逻辑与( AND). 2.用户可以创建任意个事 ...