百度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. hdu 1241(DFS/BFS)

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  2. 记一次GRPC使用报错排查

    项目一直使用grpc作为服务交互程序,其中我负责的java模块第一次引用该框架:当框架搭建好后,建立客户端代码,报错: Runable Error:java.lang.IllegalAccessErr ...

  3. webstorm 介绍

    最新版2017 破解 注册时,在打开的License Activation窗口中选择“License server”,在输入框输入下面的网址: http://idea.iteblog.com/key. ...

  4. nexus2 配置

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...

  5. ADG日志传输方式参数log_archive_dest_n详解

    主库的日志发送是由log_archive_dest_n参数设置(注意:同时还有一个和它相对应的开关参数log_archive_dest_state_n,用于指定该参数是否有效),下面简单介绍下该参数各 ...

  6. 关于 spring MVC 配置自动扫描中 use-default-filters 属性

    1.springMVC 设置扫描 Bean 的两种常见写法 1.1.先看第一种常见的配置:默认 <!-- 配置Controller扫描 --> <context:component- ...

  7. python基础之 初识函数&函数进阶

    函数基础部分 1.什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 2.定义函数 定义:def 关键词开头,空格之后接函数名 ...

  8. 关于12C中optimizer_adaptive_features参数介绍

    optimizer_adaptive_features参数在OLAP数据仓库环境中可以获得较好的效果,实际在重上传轻查询的OLTP系统上,可以关闭这项新功能. 其主要功能是为了在语句执行过程中实时收集 ...

  9. SQL SERVER 备份脚本

    DECLARE @FileName VARCHAR(200), @CurrentTime VARCHAR(50), @DBName VARCHAR(100), @SQL VARCHAR(1000)SE ...

  10. qt 安装包生成

    (Qt Installer Framework)程序简易打包教程 2017年06月19日 14:38:47 carman_风 阅读数:3559 标签: installerqt框架 更多 个人分类: 软 ...