利用百度文字识别API识别图像中的文字
本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字。百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一个百度账号。
创建百度AI文字识别应用
在百度AI开放平台中,登录自己的百度账号,点击“文字识别”服务中的“通用场景文字识别”,选择“创建应用”,填好应用名称,选择应用类型,填好应用描述,这样就创建好了“通用场景文字识别”服务,如下图:

在应用列表中,能够看到自己刚刚创建好的文字识别服务了,记住,这个应用中的“AppID”,“API Key”,“Secret Key”很重要,是你这个应用的唯一识别。

OK,创建好这个应用后,我们就能使用该应用来识别图片中的文字了~
利用创建的应用来识别图片中的文字
接下来,我们将使用刚刚创建好的文字识别应用来识别图片中的文字,大致的步骤如下:
- 获取该应用的access_token;
- 利用access_token来创建HTTP请求;
- 解析请求成功后的json文件,获取识别后的结果。
具体的参考文档可以参考网址:https://ai.baidu.com/docs#/OCR-API/top, 本文将不再具体讲述。
我们需要识别的图片为含有两个汉字的图片验证码,图片名称为test.png,如下:

参考该应用的官方文档说明,我们写下如下的Python脚本,即可识别图片中的文字,完整的代码如下:
import json
import requests
import base64
import urllib.parse
APP_ID = '你的APP_ID'
API_KEY ='你的API_KEY'
SECRECT_KEY = '你的SECRECT_KEY'
# 获取token
url = 'https://aip.baidubce.com/oauth/2.0/token'
body = {'grant_type': 'client_credentials',
'client_id': API_KEY,
'client_secret': SECRECT_KEY
}
req = requests.post(url=url, data=body)
token = json.loads(req.content)['access_token']
# 获取百度api识别结果
ocr_url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=%s'%token
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
# 读取图片并进行base64加密
body = base64.b64encode(open('./test.png' ,'rb').read())
# 进行urlencode
data = urllib.parse.urlencode({'image': body})
# post请求
r = requests.post(url=ocr_url, headers=headers, data=data)
# 输出请求结果
print('请求码为: %s' %r.status_code)
res_words = json.loads(r.content)['words_result'][0]['words']
print('识别结果为: %s' % res_words)
输出的结果如下:
请求码为: 200
识别结果为: 高吸
可以看到,对于这张图片,百度的文字识别功能很好地识别出了图片中的文字。
利用Python的百度文字识别第三方模块来识别图片中的文字
上面我们参照了百度文字识别的官方文档来实现文字识别功能,但过程有点复杂,需要先获取access_token,再构建HTTP请求才能使用。幸运的是,在Python的第三库中,已经有了能实现该功能的第三方模块,即baidu-aip,安装方式如下:
pip install baidu-aip
利用这个第三方模块,我们能简洁快速地实现文字识别功能,示例的Python代码如下:
# 利用aip进行识别
from aip import AipOcr
APP_ID = '你的APP_ID'
API_KEY ='你的API_KEY'
SECRECT_KEY = '你的SECRECT_KEY'
client = AipOcr(APP_ID, API_KEY, SECRECT_KEY)
img = open('./test.png','rb').read()
message=client.basicGeneral(img)
res = message['words_result']
print('识别结果为: %s' % res[0]['words'])
总结
本文并没有讲述如何从AI模型来识别图片中的文字,而是利用百度AI平台中的文字识别服务来完成文字识别任务。看上去并没有什么新意,只是讲解使用使用API来识别图片中的文字罢了。
那么,本文的意义在哪?其实,在使用模型识别文字前,一个很重要的过程便于标注,标注费时费力,这时候我们借助第三方文字识别API能够减轻标注的工作量,让我们的标注量能减少点。
当然,如果你把这篇文章看作是一个学习如何利用百度文字识别API识别图像中的文字的机会,那也未尝不可!
注意:本人现已开通微信公众号: Python爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注哦~~
利用百度文字识别API识别图像中的文字的更多相关文章
- 使用 Python 识别并提取图像中的文字
1. 介绍 介绍使用 python 进行图像的文字识别,将图像中的文字提取出来,可以帮助我们完成很多有趣的事情. 2. 必备工具 tesseract-ocr 下载地址: https://github. ...
- Zybo智能小车识别图像中的文字
智能小车识别图像中的文字 [TOC] 运行平台 这次的内容是基于Xilinx公司的Zybo开发板以及其配套的Zrobot套件开发 Zybo上面的sd卡搭载了Ubuntu12.04LTS的linux版本 ...
- 利用百度接口进行人脸识别并保存人脸jpg文件
利用百度接口进行人脸识别,根据返回的人脸location用opencv切割保存. # coding : UTF-8 from aip import AipFace import cv2 import ...
- 安卓开发 利用百度识图api进行物体识别
前文 之前的随笔中,已经通过相机或相册获取到了我们想要的图片,接下来进行识图api的配置工作.我使用的是百度的api,利用python获取信息,并在MainActivity中进行调用来输出信息. 一. ...
- 利用百度AI OCR图片识别,Java实现PDF中的图片转换成文字
序言:我们在读一些PDF版书籍的时候,如果PDF中不是图片,做起读书笔记的还好:如果PDF中的是图片的话,根本无法编辑,做起笔记来,还是很痛苦的.我是遇到过了.我们搞技术的,当然得自己学着解决现在的痛 ...
- 安卓开发 利用百度识图api进行物体识别(java版)
之前的随笔中,已经实现了python版本调用api接口,之所以使用python是因为python比java要简洁. 但是我发现在使用过程中,chaquopy插件会弹出底部toast显示"un ...
- Android调用OCR识别图像中的文字
// CharacterExtractor.java // Copyright (c) 2010 William Whitney // All rights reserved. // This sof ...
- CNN如何识别一幅图像中的物体
让我们对卷积神经网络如何工作形成更好直观感受.我们先看下人怎样识别图片,然后再看 CNNs 如何用一个近似的方法来识别图片. 比如说,我们想把下面这张图片识别为金毛巡回犬. 一个需要被识别为金毛巡 ...
- 【Android】18.2 利用百度定位服务API实现位置跟踪
分类:C#.Android.VS2015: 创建日期:2016-03-04 一.简介 第3章已经介绍过百度定位SDK,这里再演示一遍其基本用法. 二.示例2-百度定位服务基本用法 运行截图 设计步骤 ...
随机推荐
- flask之分析线程和协程
flask之分析线程和协程 01 思考:每个请求之间的关系 我们每一个请求进来的时候都开一个进程肯定不合理,那么如果每一个请求进来都是串行的,那么根本实现不了并发,所以我们假定每一个请求进来使用的是线 ...
- 2016/10/13 Oracle COALESCE()
语法:COALESCE(s1,s2,...,sn),n>=2,此表达式的功能为返回第一个不为空的表达式,如果都为空则返回空值. 现有表tb_a: 实例1:在tb_a表中给sname列为空的人员设 ...
- mysql统计天、周、月、季度、半年、年
之前在网上搜索按时间统计,发现不是很全 ,接着别人的思路进行延伸下, mysql统计天.周.月.季度.半年.年 前期工作创建辅助表 CREATE TABLE num (i INT); ),(),(), ...
- Java连载63-异常处理try...catch...、方法getMessageyu printStackTrace
一.处理异常的第二种方法 1.try......catch... 语法: try{ 可能出现异常的代码: }catch{ 处理异常的代码: }catch{ 注意: (1)引入了什么异常,catch里面 ...
- Spring Cloud进阶之路 | 二:服务提供者(discovery)
1 创建父项目 以前文所述,以spring boot 2.1.7.RELEASE为基,spring cloud版本为Greenwich.SR2,spring cloud alibaba版本为2.1.0 ...
- 前后端分离及Element的使用
1. 前后端分离 1.1 什么是前后端分离 在传统的web应用开发中,大多数的程序员会将浏览器作为前后端的分界线.将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数 ...
- Jenkins工程中SQL语句执行的方法
前言 网上很多jenkins工程中基于shell或批处理方式调用sql文件执行sql命令的方式,大部分都是需要基于sql文件来完成的,因此在sql语句发生变化时需要去jenkins服务端修改对应的sq ...
- React搭建项目(全家桶)
安装React脚手架: npm install -g create-react-app 创建项目: create-react-app app app:为该项目名称 或者跳过以上两步直接使用: npx ...
- Appium(九):Appium API(三) 滑动和拖拽、高级手势、手机操作
1. 滑动和拖拽 我们在做自动化测试的时候,有些按钮是需要滑动几次屏幕后才会出现,此时,我们需要使用代码来模拟手指的滑动,也就是接下来要学的滑动和拖拽了. 1.1 swipe滑动事件 从一个坐标位置滑 ...
- Newifi-mini OpenWrt 下 EAP-PEAP,EAP-TLS 企业级无线认证及 FreeRadius3
Newifi-mini OpenWrt 下 EAP-PEAP,EAP-TLS 企业级无线认证及 FreeRadius3 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-07-15. ...