百度OCR图片内容识别

目录

前言:

一、效果图

二、百度OCR API申请

三、源码

四、注意点

五、总结


前言:

    昨天一个朋友需要将手机拍摄的excel表(人员花名册)内容识别出来重新变成电子档excel需求,朋友下了多个OCR软件,效果都不理想。我网上找了几个大厂的OCR在线API接口,大多需购买,但百度很良心(非广告),于是搬用“拿来主义”试一试。将操作过程博文记录。


一、效果图

二、百度OCR API申请

入口链接:https://cloud.baidu.com/product/ocr/general?_=1616566711496

操作教程:https://cloud.baidu.com/doc/OCR/s/dk3iqnq51

注册登录后,根据需要创建文字识别应用,填入必填信息,记住AppID、API Key、Secret Key

三、源码

百度OCR API文档:https://cloud.baidu.com/doc/OCR/index.html

如下是python版代码:

from aip import AipOcr
import re

""" 你的 APPID AK SK """
APP_ID = 'XXXXXX'
API_KEY = 'XXXXXX'
SECRET_KEY = 'XXXXXX'


# """ 调用表格文字识别 """
# client.tableRecognitionAsync(image)

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()


def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass

    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass

    return False


def main():
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    # 识别参数
    options = {}
    options["language_type"] = "CHN_ENG"
    options["detect_direction"] = "true"
    options["detect_language"] = "true"
    options["probability"] = "false"

    # 本地图片识别
    image = get_file_content('test.png')
    result = client.basicGeneral(image, options)

    # 网络图片识别
    #url = "http://www.xxxxxx.com/download.jpg"
    #result = client.basicGeneralUrl(url, options)
    print('**********原始内容:\n')
    print(result['words_result'])
    print('\n\n**********格式化处理后内容(去掉words关键字,如果遇到纯数字换行处理):\n')
    info = result['words_result']
    for item in info:
        for k, v in item.items():
            print('内容: ', v)
            if is_number(v):
                print('\n')


if __name__ == '__main__':
    main()

四、注意点

因朋友花名册信息敏感,本博文测试图片为网络截取一段话,识别效果不错。但昨天测试的拍摄图片识别效果不甚理想,记录如下:

1、表格信息内容识别结果经常截断不全。

2、有的列合并在了一起,如花名册为7列的表格,有的行记录识别后变成了4列,有的行记录变成了6列,毫无规律,但因为最后一列数据为手机号,所以代码中处理到纯数字时会换行,与其他行信息区分开。

3、图片的大小有要求。开始识别准确率不是很好,发现朋友发过来原图只有几百K,重新拍摄高清图(4M大小左右)后,API无法识别。需注意对图片的要求,如下图:

五、总结

OCR对于标准类信息(如身份证、车牌或某些票据类)识别准确率高,但对于个性化需求,识别效果不是很理想。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 要在Java中实现调用百度OCR票据识别服务,可以按照以下步骤进行: 1. 首先,我们需要获取百度AI开放平台的相关API Key和Secret Key。可以在百度AI开放平台的官方网站上注册并创建一个应用,然后获取到这两个关键的身份验证参数。 2. 在Java中,可以使用百度AI开放平台提供的Java SDK来调用相关服务。首先,需要确保项目中已经引入了百度OCR的Java SDK依赖。 3. 创建一个OCRClient对象,并使用之前获取到的API Key和Secret Key进行身份验证。 4. 为要识别的票据准备好图片数据。可以使用Java的File类来读取本地图片文件,也可以直接使用网络上的图片URL。将图片数据转换为字节数组。 5. 调用票据识别的方法,传入要识别图片数据。可以使用票据识别的方法来识别票据中的各种字段信息,如发票代码、发票号码等。 6. 处理返回的结果。根据百度OCR API的返回结果,解析出需要的字段信息,并进行相应的业务处理。 7. 最后,记得释放资源和处理异常情况,确保程序的稳定性和安全性。 这样,我们就可以在Java中调用百度OCR票据识别服务了。记得在调用API之前,阅读相关文档和了解API的使用限制和注意事项,以确保调用的有效性。 ### 回答2: 在Java中调用百度OCR票据识别功能,可以通过以下几个步骤来实现。 首先,需要在百度云AI平台上创建一个OCR应用,并获取应用的API Key和Secret Key。这些凭证将用于后续的认证和授权。 然后,需要引入百度AIP Java SDK,可以通过maven等方式将它添加到项目的依赖中,以便能够在代码中使用百度OCR相关的接口。 接下来,在代码中构建AipOcr对象,将API Key和Secret Key以及OCR接口的请求地址设置进去。可以通过AipOcr的实例来调用百度OCR相关的接口。 调用百度OCR票据识别功能时,可以通过调用AipOcr对象的receiptRecognize方法来实现。将票据图片的二进制数据作为参数传递给该方法即可。 对于返回的结果,可以通过解析返回的JSON数据来获取识别结果。如票据的种类、识别的文字内容、发票代码、发票号码等信息。 最后,根据需要对返回的识别结果进行处理和展示,可以输出到控制台,保存到文件,或者在界面上显示出来。 总结起来,调用百度OCR票据识别功能需要先获取API Key和Secret Key,然后引入百度AIP Java SDK,构建AipOcr对象,并调用相关接口进行票据识别。最后根据识别结果进行后续处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻欢子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值