本文将会介绍如何使用百度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识别图像中的文字的更多相关文章

  1. 使用 Python 识别并提取图像中的文字

    1. 介绍 介绍使用 python 进行图像的文字识别,将图像中的文字提取出来,可以帮助我们完成很多有趣的事情. 2. 必备工具 tesseract-ocr 下载地址: https://github. ...

  2. Zybo智能小车识别图像中的文字

    智能小车识别图像中的文字 [TOC] 运行平台 这次的内容是基于Xilinx公司的Zybo开发板以及其配套的Zrobot套件开发 Zybo上面的sd卡搭载了Ubuntu12.04LTS的linux版本 ...

  3. 利用百度接口进行人脸识别并保存人脸jpg文件

    利用百度接口进行人脸识别,根据返回的人脸location用opencv切割保存. # coding : UTF-8 from aip import AipFace import cv2 import ...

  4. 安卓开发 利用百度识图api进行物体识别

    前文 之前的随笔中,已经通过相机或相册获取到了我们想要的图片,接下来进行识图api的配置工作.我使用的是百度的api,利用python获取信息,并在MainActivity中进行调用来输出信息. 一. ...

  5. 利用百度AI OCR图片识别,Java实现PDF中的图片转换成文字

    序言:我们在读一些PDF版书籍的时候,如果PDF中不是图片,做起读书笔记的还好:如果PDF中的是图片的话,根本无法编辑,做起笔记来,还是很痛苦的.我是遇到过了.我们搞技术的,当然得自己学着解决现在的痛 ...

  6. 安卓开发 利用百度识图api进行物体识别(java版)

    之前的随笔中,已经实现了python版本调用api接口,之所以使用python是因为python比java要简洁. 但是我发现在使用过程中,chaquopy插件会弹出底部toast显示"un ...

  7. Android调用OCR识别图像中的文字

    // CharacterExtractor.java // Copyright (c) 2010 William Whitney // All rights reserved. // This sof ...

  8. CNN如何识别一幅图像中的物体

    让我们对卷积神经网络如何工作形成更好直观感受.我们先看下人怎样识别图片,然后再看 CNNs 如何用一个近似的方法来识别图片. 比如说,我们想把下面这张图片识别为金毛巡回犬.   一个需要被识别为金毛巡 ...

  9. 【Android】18.2 利用百度定位服务API实现位置跟踪

    分类:C#.Android.VS2015: 创建日期:2016-03-04 一.简介 第3章已经介绍过百度定位SDK,这里再演示一遍其基本用法. 二.示例2-百度定位服务基本用法 运行截图 设计步骤 ...

随机推荐

  1. Oracle用户、角色、权限

    一.Oracle权限 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言) 对象权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的) 1.Oracle系统权限 ​ o ...

  2. SOCKET CAN的理解

    转载请注明出处:http://blog.csdn.net/Righthek 谢谢! CAN总线原理 由于Socket CAN涉及到CAN总线协议.套接字.Linux网络设备驱动等.因此,为了能够全面地 ...

  3. 获取本地计算机名称和Ip地址

    using System.Net; Dns.GetHostName();//获取本地计算机主机名 IPAddress[] IP = Dns.GetHostAddresses(Dns.GetHostNa ...

  4. 《Java基础知识》Java类的基本运行顺序

    我们以下面的类来说明一个基本的 Java 类的运行顺序: public class Demo { private String name; private int age; public Demo() ...

  5. 《Java基础知识》Java类的定义及其实例化

    类必须先定义才能使用.类是创建对象的模板,创建对象也叫类的实例化. 下面通过一个简单的例子来理解Java中类的定义: public class Dog { String name; int age; ...

  6. html5 中video标签属性

      <video id="haoroomsvideo" src="haorooms.mp4" poster="images/haorooms.j ...

  7. 初步了解JVM第三篇(堆和GC回收算法)

    在<初步了解JVM第一篇>和<初步了解JVM第二篇>中,分别介绍了: 类加载器:负责加载*.class文件,将字节码内容加载到内存中.其中类加载器的类型有如下:执行引擎:负责解 ...

  8. swoole运行模式加速laravel应用的详细介绍

    本篇文章给大家带来的内容是关于swoole运行模式加速laravel应用的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.Swoole Swoole号称重新定义了PHP, ...

  9. AOP框架Dora.Interception 3.0 [3]: 拦截器设计

    对于所有的AOP框架来说,多个拦截器最终会应用到某个方法上.这些拦截器按照指定的顺序构成一个管道,管道的另一端就是针对目标方法的调用.从设计角度来将,拦截器和中间件本质是一样的,那么我们可以按照类似的 ...

  10. React-Native三种断点调试方式的流程和优缺点比较

    RN的调试和web端的调试虽然相似,但是也有一些不同,下面就来比较一下三种断点调试方法的差异 总结: 感觉还是第一种好一些 1.React-Native-Debugger工具调试法 1.1 首先我们得 ...