百度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. ThinkPHP3.2.3框架下接入阿里云短信服务接口实现:注册登录

    首先介绍下短信注册登录流程: 注册页面点击获取手机号验证码按钮,用jquery的click事件POST或GET方法把手机号发送到后台控制器: 后台控制器创建函数,收到手机号后生成随机码,例如:6位的随 ...

  2. 浏览器调起Hbuilder的APP

           最近用Hbuilder来开发APP,测试各种功能,其中,最近测试到,要用这个浏览器调起APP的功能,我看官网有教程,但是有些可能刚工作没多久,所以,有些地方看不大明白,官方也没细说,所以 ...

  3. window下强制删除文件

    在windows系统下,有时候总有一下没办法删除的文件,这个时候可以使用一个命令行脚本强行删除 步骤如下: 把以下代码保存为一个delete.txt文件 DEL /F /A /Q \\?\%1 RD ...

  4. linux应用以及常用命令

    各目录作用"/" :Linux文件系统的入口.也是最高一级的目录."/bin":基本系统所需要的命令,功能和"/usr/bin"类似,这个目 ...

  5. Nestjs 接口验证

    class-validator Nestjs yarn add class-transformer class-validator main.ts import { NestFactory } fro ...

  6. 26.webpack 入门

    webpack 官方: https://webpack.js.org/ http://webpack.github.io/ 中文: https://www.webpackjs.com/ 资料: htt ...

  7. 微信小程序之wx.showmodal

    1. . wx.showModal({ title: "2222步", content: currentCache ? "确定为自己城市添加步数吗" : &qu ...

  8. Python学习之旅(三十二)

    Python基础知识(31):图形界面(Ⅱ) Python内置了turtle库,可以在计算机上绘图 运动控制: 1.画笔定位到坐标(x,y):turtle.goto(x,y) 2.向正方向运动 dis ...

  9. NodePort 只能在node节点上访问,外部无法访问

    创建了一个NodePort类型的jenkins service,node port 30000,node节点ip为192.168.56.101, 在node节点上通过浏览器能正常访问http://19 ...

  10. maven跳过单元测试-maven.test.skip和skipTests的区别

    1. 介绍 -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下. -Dmaven.test.skip=true,不执行测试用例, ...