百度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. HttpSession的认识

    package javax.servlet.http; import java.util.Enumeration; import javax.servlet.ServletContext; publi ...

  2. HTML页面本地正常,部署到服务器稍微异常解决方案

    <meta http-equiv="X-UA-Compatible" content="IE=edge" > 在IE浏览器正常显示

  3. perl 递归删除目录和目录中的文件

    #!/usr/bin/perl use autodie; use utf8; use Encode qw(decode encode); sub del_dir{ my $path = shift @ ...

  4. 传纸条---(dp)

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mmm行nnn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了. ...

  5. Yet Another Ball Problem

    Yet Another Ball Problem time limit per test 3 seconds memory limit per test 256 megabytes input sta ...

  6. 《JAVA编程思想》第四版 PDF

    感谢,参考:https://www.cnblogs.com/buwuliao/p/8073211.html 一.链接: 中文版: https://pan.baidu.com/s/1d07Kp4 密码: ...

  7. 主流框架的搭建(VUE,React)

    vue脚手架:cnpm install vue vue-cli -gvue init webpack/webpack-simple shuaige(新建文件夹的名字)cd shuaigecnpm in ...

  8. vivado/FPGA 使用小纪

    1.使用FPGA做为外部控制器的总线译码时,将总线时钟接在全局时钟脚上(MRCC),就算接在了局部时钟(SRCC)上,也要通过BUFG转为全局时钟走线,否则会因为local clk到各部分的时延较大引 ...

  9. java_Arrays.sort()方法

    这个方法位于util包里,可以传入任一类型数组,默认按照字典序升序排序 如果要按照降序排序,直接写一个循环来颠倒顺序就好了 源码如下 String[] name = {"1",&q ...

  10. iOS 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?

    如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用? 1. - (void)pushViewController:(U ...