前言:

首先呢,最近再公司的项目当中遇到这样的一个问题,就是需要识别图片,提取图片当中的关键语句,而且识别的语句当然是人家手写体识别,翻来覆去一想,最终还是决定使用百度的OCR帮助我解决这一项需求

话不多说,我们直接开始

先去官网一探究竟

https://cloud.baidu.com/product/ocr

这里我们看到有很多相关的产品,大致都是图片文字识别,大致都相同

我们在这里选择自定义模板识别,这样跟符合我们逻辑业务的需求,让用户去手填一个单子,肯定会有一定的模板信息,这样识别的精度和准确性相比通用识别的话,会好很多/

点击立即使用,进入到模板添加页面,我们需要添加要给自定义模板,为了方便测试,这里提供一个我自己测试用的模板图片方便大家测试

这里是一个公司经常都会用到的一个费用报销清单,很适合我们这次的模板识别;

点击添加模板,上传这张图作为文件

新建识别字段

框选识别区新建

这里需要新建四个识别字段,我们这里就建立这样四个就好。识别字段就是在你上传图片后 它会按照这个去作为参考,然后去识别对应的识别区;

小试牛刀

这里新建完成后,保存,然后找一张手写的图片,进行一个测试,这里我提供一张图片作为参考:

随便写了几个名字,手写的还行 !哈哈

测试,进行识别操作

进行了一波识别,效果还是不错的,识别效果特别好,然后就可以接入项目当中了,这里我们当然选择Springboot 现在主流的框架,有什么理由不用呢?

发布成功后,记住模板ID,还有去创建一个App,这里百度有详细的介绍,我这里就不过多介绍了,我们直接开始新建要给Springboot项目,参考文档,引入POM依赖,直接开干

<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>4.8.0</version>
</dependency>

百度这里最新的版本号是:4.8.0,引入即可

新建AipOcr

AipOcr是Optical Character Recognition的Java客户端,为使用Optical Character Recognition的开发人员提供了一系列的交互方法。

用户可以参考如下代码新建一个AipOcr,初始化完成后建议单例使用,避免重复获取access_token:

这里我们直接使用SpringBoot的Bean注入的方式使用:

/**
* 百度云token
*/
@Configuration
public class Sample { //设置APPID/AK/SK
@Value("${api.baidu.com.appid}")
private String APP_ID;
@Value("${api.baidu.com.appkey}")
private String API_KEY;
@Value("${api.baidu.com.appsecret}")
private String SECRET_KEY; @Bean
public AipOcr createAipOcr(){ AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY); //建立连接的超时时间(单位:毫秒)
client.setConnectionTimeoutInMillis(2000);
//通过打开的连接传输数据的超时时间(单位:毫秒)
client.setSocketTimeoutInMillis(60000); return client;
} }

这样用起来多方便,Springboot 大爱,太好用了,全局只需要初始化一个对象,全局调用,不用反复考虑Token的问题;

这里用一下官方的代码,说明一下直接调用AipOcr多爽,识别后,返回Json格式字符串,判断美哟错误的话,直接解析Json字符串即可

public void sample(AipOcr client) {
// 传入可选参数调用接口
HashMap<String, String> options = new HashMap<String, String>();
options.put("templateSign", "Nsdax2424asaAS791823112");
options.put("classifierId", "31232"); // 参数为本地路径
String image = "test.jpg";
JSONObject res = client.custom(image, options);
System.out.println(res.toString(2)); // 参数为二进制数组
byte[] file = readFile("test.jpg");
res = client.custom(file, options);
System.out.println(res.toString(2));
}

Demo演示:

参考:

http://ai.baidu.com/docs#/OCR-Java-SDK/aadf7467

https://cloud.baidu.com/doc/OCR/s/0jwvy03go/

https://cloud.baidu.com/doc/OCR/OCR-API.html#.E6.9B.B4.E6.96.B0.E8.AE.B0.E5.BD.95

Demo分享:如果觉得文章有帮到你的地方 不妨给个Star吧!

码云:https://gitee.com/mrc1999/baiduOcr

最新文章

  1. angular学习之路(一)
  2. jdbc连接数据库(mysql,sqlserver,oracle)
  3. Redis 缓存 + Spring 的集成示例
  4. XMLHTTPRequest/Ajax请求 和普通请求的区别
  5. O(1)快速乘注意事项
  6. aspx页面Page_Load和aspx页面上控件Page_Load事件执行顺序
  7. Spark Programming--WordCount
  8. 关于mysql的错误 - no query specified
  9. 编译内核,配置内核make menuconfig
  10. PHP面向对象——GD库实现图片水印和缩略图
  11. Windows下Apache的下载安装启动停止
  12. 深度学习&amp;机器学习资源汇总1
  13. IE6浏览器无法打开QQ邮箱
  14. sql 有条件计数
  15. 2019.02.27 bzoj4556: [Tjoi2016&Heoi2016]字符串(二分答案+sam+线段树合并)
  16. Ex 3_25 图中每个顶点有一个相关价格..._十一次作业
  17. js提取对象的key值和value值
  18. SQL注入之Sqli-labs系列第十一关(基于单引号的万能密码注入)
  19. 升级webpack2
  20. shit aliyun

热门文章

  1. 2019牛客国庆集训派对day1
  2. eclipse juno 怎么安装maven
  3. Cobaltstrike与Metasploit会话转换
  4. Python调用win32&#160;API绘制正弦波
  5. ICEM-圆角正方体
  6. Android自动化测试--monkey总结
  7. 秒杀功能压测 jmeter--------重要!!!
  8. SubQuery优化
  9. java8之Spliterator
  10. PostgreSQL递归查询示例