专栏首页Node开发图片文字识别实现(1)

图片文字识别实现(1)

上次使用百度AI接口开发过人脸识别接口,今天腾出时间所以去看了看文字识别的技术接口文档。文字识别一样有SDK可以接入快速开发,但是我不准备使用SDK接入,本篇文章直接使用API文档接入文字识别API。上篇文章对Express框架进行了简单封装,我们可以在上篇文章的项目基础上继续进行。如果想从零开始搭建项目可以看下上一篇文章:jsonwebtoken生成与解析token

我们可以看看现在项目的结构:

我们先来看看各个文件夹的效果:

dao:数据库层业务逻辑
db:封装mysql的一些基本方法,如初始化、更新
doc:ApiDoc自动根据接口注释生成接口文档
node_module:引入的第三方包
public:存放静态资源
router:接口路由层,存放业务逻辑
util:封装一些常用公共方法,如签名加密

本篇文章主要对几个不需要申请权限的接口进行测试,我们来看下文字识别都有什么类型的接口:

首先调用API我们需要携带参数access_token参数。所以接下来我们需要先获取access_token。我们看下文档对于access_token的要求:

文档写的很清晰,我们不多废话,直接代码来实现获取access_token。首先我们将client_idclient_secret配置在config.js中:

util文件夹下建立postHelper.js文件,用来封装http请求。首先获取access_token需要,我们先封装一个Content-Type为application/x-www-form-urlencodedPOST请求方法:

接下来实现一个接口,获取access_token。上一篇详细讲解了一个接口的设计方法。所以获取access_token接口的具体流程为:

将所有必须参数去掉sign参数按照制定规则加密生成签名sign.
发起post请求,获取access_token.

接下来我们代码实现下,我们将加密签名等业务逻辑放在路由层实现:

然后将调用post请求请求access_token接口获取access_token操作放在dao层执行。

这边由于我们发起请求使用了request库,所以我们需要先安装一下依赖,命令为:

npm install request --save-dev

然后我们来看下接口运行效果:

可以看到access_token已经成功获取到。因为access_token是有过期时间的,所以可以选择过期了再次获取新的access_token或者每次请求API之前先获取新的access_token。接下来我们看下第一个接口:通用文字识别。

通用文字识别接口

先贴下文档接口说明:

本接口需要用到的请求参数也顺便贴出来:

接口其实很简单,上传图片解析文字。图片格式可以BASE64格式或者url。我这里使用URL进行测试,接下来实现业务逻辑代码:

这个接口有两个地方需要格外注意:

如果image参数存在,则url参数无法生效
url不支持https,也就是https协议的图片url无法进行解析

我们可以看下接口相应效果:

顺便贴下返回参数的说明,可以对着字段理解返回值的含义:

可以看到图片识别文字解析到了两句话,当然这个接口可以选传参数,我们可以再看下请求参数说明可以选择识别语言类型,检测图片朝向等。选传参数我这边不测试,有兴趣可以自行拓展。接下来看下一个接口:通用文字识别(含位置信息版)。

通用文字识别(含位置信息版)

看标题就可以知道本接口和上个接口的区别在于本接口可以返回文字在图片中的位置信息。首先贴下接口说明:

我们直接代码实现下本接口。直接贴下代码:

我们来看下接口效果:

可以看到在解析的数组里面返回了文字相对于图片的位置。我们可以贴下返回参数说明:

接口可以选传参数recognize_granularity定位但字符位置等。对于选传参数就不过多解释。读者可以自行拓展。接下来我们来看下一个接口:手写文字识别。

手写文字识别

本接口可以识别图片中手写中文或数字。首先贴下接口说明:

我将使用以下图片进行手写图片识别:

话不多说,我们直接实现代码:

我们首先需要将图片进行base64编码,然后提交到API。我这边以读取本地图片进行base64编码示例。我们可以测试下接口效果:

返回结果成功解析到手写图片的文字了。我们可以看下返回参数的说明:

身份证识别

支持对大陆居民二代身份证正反面的所有字段进行结构化识别,包括姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限;同时,支持对用户上传的身份证图片进行图像风险和质量检测,可识别图片是否为复印件或临时身份证,是否被翻拍或编辑,是否存在正反颠倒、模糊、欠曝、过曝等质量问题。首先贴一下接口说明:

话不多说直接实现接口代码:

本接口必传参数除了进行base64编码的image外,还需要指定身份证正反面。我们可以测试下接口效果:

贴下返回参数帮助读者理解接口返回参数的含义:

本片文章先介绍上面四个接口,我们可以看到利用百度AI接口是很容易接入文字识别功能的。当然我们这种是站在前人的肩膀上进行开发的,有兴趣的可以自己去研究底层源码。本篇文章就到这里结束了,下一篇接着讲讲剩下的文字识别接口,涉及各种类型的图片文字识别如银行卡照片识别,行驶证照片识别等。我们下一篇文章再见!

本篇文章代码已同步到码云,可自行下载使用:

https://gitee.com/mqzuimeng/test_code.git

本文分享自微信公众号 - 程序猿周先森(zhanyue_org),作者:逆月翎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 图片文字识别(2)

    上一篇文章封装了request库用来发起http请求,然后获取了用户操作凭证access_token。上篇文章主要对百度AI文字识别接口最基础...

    逆月翎
  • NodeJS人脸识别(3)

    前两篇文章介绍了使用NodeJS官方提供的SDK进行快速开发,但是SDK毕竟是封装好的,省略了认证发起请求一系列操作,本篇文章不使用SDK进行开...

    逆月翎
  • 第三方登录(3)---微博登录

    我们在前面实现了使用QQ账号以及GitHub账号进行第三方登录。有兴趣的可以看看前两篇文章:

    逆月翎
  • HTTP接口测试还可以这么玩

    1 背景 随着H5在各行业领域的运用,无论是在APP内嵌入H5页面的hybrid应用还是直接在微信公众号或者轻应用中使用H5页面都是非常的常见(比如前端页面通过...

    腾讯移动品质中心TMQ
  • c#接口interface学习

    好久没学习C#了,上次已经学习到了接口这块,感觉有点不太好理解,因此重新学习,在vs上面运行了,本来不想写博客的,但是正好看到网上有人说,写博客可以加深印象,...

    用户4645519
  • 前端架构之路(2) - 本地化接口模拟、前后端并行开发

    在前后端分离之前,前后端的数据交流以及页面渲染使用后端的模板(如 java > jsp、php > smarty)是很常见的,所以前端对页面的开发与调试总是依赖...

    前端博客 : alili.tech
  • RobotFrameWork接口项目分层及通用控制方式

    上一篇文章介绍了在设计接口用例之前应遵守的设计规范,详见《RobotFramework接口设计规范》,当然读者公司的内部规范也不一定非得完全遵循笔者所提...

    测试开发技术
  • 一分钟了解“好”接口的设计与实现

    一、好接口的特性 易读 易用,难于误用 功能独立 容易扩展 二、好接口设计的基本原则 只做并做好一件事 函数名自解释 不恰当的函数名,往往是不恰当设计的征...

    架构师之路
  • 腾讯TMQ沙龙|接口测试理论与实践

    接口测试理论与实践 活动时间:2016年8月11日 QQ群视频交流 活动介绍 : TMQ在线沙龙第六期分享 本次分享的主题是接口测试理论与实践相关的知识。 共...

    腾讯移动品质中心TMQ
  • π框架从入门到放弃

    什么是π框架? 全称Phalapi,是一个PHP轻量级开源接口框架,以下是他的优点: 免费:最好的往往是免费的; 不断更新:15年发布,到现在不断的更新和完善,...

    benny

扫码关注云+社区

领取腾讯云代金券