今天遇到一个问题需要解决,就是从顾客的账单(PDF格式)中通过标识提取出属性值。有两个方法来实现这个功能,一是通过PDFBox或itext先提取文字再进行位置判断,二是通过图像识别,先找到位置再进行文字的识别。第一种方法有局限性,一旦用户上传的不是PDF格式的文件,就无法进行识别,使用导师让我考虑用图像识别的方法来进行提取。
尝试使用了一下百度的OCR识别,识别的准确率挺高的,但是无奈顾客的信息不能泄露,所以实际应用中不能使用百度OCR。只能写个博客记录一下开发过程。
1、创建应用
首先当然是在百度的网站上创建应用,拿到APP_ID、API_KEY和SECRET_KEY,比较简单就不多说了
2、自定义模板
因为我所需要的业务是从账单中提取所需要的内容,而且账单的格式比较固定,使用可以使用自定义模板来提取只对我有用的信息,这样做识别率和准确率会更高一些,但是缺点就是一旦模板修改就需要重新设计。
百度的自定义模板分为两块,分别是
- 【参照字段】:图片中位置和内容都固定不变的文字后期上传的图片会以此为依据进行扭正,参照字段的选取会影响图片的识别率,建议选取8个以上的参照字段,单个参照字段内的文字不可以换行。
- 【识别区】:需要识别的值可能出现的范围。
通过这两个区域的设置,可以对我们所需要的区域进行一个识别
3、创建AipOcr并且调用
AipOcr就是百度OCR的应用程序,通过创建AipOcr来进行识别,然后调用custom方法