百度OCR图片内容识别

目录

前言:

一、效果图

二、百度OCR API申请

三、源码

四、注意点

五、总结


前言:

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


一、效果图

百度OCR图片内容识别_第1张图片

二、百度OCR API申请

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

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

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

百度OCR图片内容识别_第2张图片

三、源码

百度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图片内容识别_第3张图片

五、总结

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

 

你可能感兴趣的:(python,OCR,图片内容识别,百度OCR,免费OCR,图像识别)