百度AI攻略:iOCR財會票據識別定製版

1. 功能介紹python

百度已經推出了iOCR財會票據識別,針對財會報銷場景提出的專項解決方案,可對各種財務票據、報銷單、銀行回單、對帳單進行自動分類及結構化識別,並支持用戶爲固定版式的新票據/單據自定義結構化識別模板及分類器。百度iOCR財會票據識別功能很是的強大,我在:json

https://ai.baidu.com/forum/topic/show/955803app

這篇文章裏面已經進行了比較詳細的介紹,你們有興趣能夠看一下。測試

iOCR財會票據識別內置了7種票據格式,若是咱們要對其餘的票據識別,好比機票行程單,要怎麼辦呢? 這就是咱們今天要介紹的自定義模板功能:百度iOCR自定義模板文字識別,針對未預置且版式固定的票據單據,用戶只需上傳一張模板圖片,便可自助製做模板,創建圖片中文字的Key-Value對應關係,實現對相同版式圖片的結構化識別。url

咱們在今天的這篇文章裏會帶你們自定義一個機票行程單模板,包括相關的調用步驟、代碼及使用方案。3d

2.模板定義及平臺接入rest

自定義模板的功能地址爲: https://ai.baidu.com/iocr#/templatelistcode

進入界面後,若是之前沒有定義過模板會提示你們創建模板,界面如圖:orm

你們按照提示進行操做,首先上傳模板圖片,這裏選擇一張機票行程單上傳。blog

而後是定義參考字段,注意參考字段不是識別的內容,而是程序用來定位及判斷是否爲模板,仍是別的內容的依據。

而後是選擇識別的內容,這個是要識別的數據。本例子中選擇了姓名,總金額和機票號碼,3個字段。

選擇後能夠點擊「試一試」看一下模板的效果

若是滿意,能夠點擊發布,將模板發佈出去。要記錄提示信息裏面的模板ID,這個在下一步調用的時候要使用。

具體接入方式比較簡單,能夠參考個人另外一個帖子,這裏就不重複了:

http://ai.baidu.com/forum/topic/show/943327

3.自定義模板調用攻略(Python3)及評測

3.1首先認證受權:

在開始調用任何API以前須要先進行認證受權,具體的說明請參考:

http://ai.baidu.com/docs#/Auth/top

具體Python3代碼以下:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import urllib

import base64

import json

#client_id 爲官網獲取的AK, client_secret 爲官網獲取的SK

client_id =【百度雲應用的AK】

client_secret =【百度雲應用的SK】

#獲取token

def get_token():

    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret

    request = urllib.request.Request(host)

    request.add_header('Content-Type', 'application/json; charset=UTF-8')

    response = urllib.request.urlopen(request)

    token_content = response.read()

    #print (token_content)

    if token_content:

        token_info = json.loads(token_content)

        token_key = token_info['access_token']

    return token_key

3.2財會票據識別分析接口調用:

詳細說明請參考: https://ai.baidu.com/docs#/iOCR-General-API/top

調用地址:https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise

請求參數:

你們注意templateSign就是咱們在提交定義模板的時候返回的ID。

返回參數:

 

Python3調用代碼以下:

#財會票據

#filename:圖片名(本地存儲包括路徑),template模板號

def recognise(filename,template):

    request_url = "https://aip.baidubce.com/rest/2.0/solution/v1/iocr/recognise"

    print(filename)

    # 二進制方式打開圖片文件

    f = open(filename, 'rb')

    img = base64.b64encode(f.read())

 

    params = dict()

    params['image'] = img

    params['templateSign'] = template

    params = urllib.parse.urlencode(params).encode("utf-8")

 

    access_token = get_token()

 

    begin = time.perf_counter()

    request_url = request_url + "?access_token=" + access_token

    request = urllib.request.Request(url=request_url, data=params)

    request.add_header('Content-Type', 'application/x-www-form-urlencoded')

    response = urllib.request.urlopen(request)

    content = response.read()

    end = time.perf_counter()

    print('處理時長:'+'%.2f'%(end-begin)+'秒')

 

    if content:

        #print(content)

        content=content.decode('utf-8')

        #print(content)

        data = json.loads(content)

        print(data)

4.功能評測:

選一張機票對效果進行測試,具體效果以下(如下例子均來自網上):

處理時長:5.03秒

返回JSON爲

{'data': {'ret': [{'probability': {'average': 0.952863, 'min': 0.495304, 'variance': 0.01743}, 'location': {'height': 13, 'left': 88, 'top': 332, 'width': 127}, 'word_name': 'Number', 'word': '8472412222853'}, {'probability': {'average': 0.903623, 'min': 0.725142, 'variance': 0.012429}, 'location': {'height': 13, 'left': 821, 'top': 303, 'width': 87}, 'word_name': 'Total', 'word': 'cNY320.0'}, {'probability': {'average': 0.991988, 'min': 0.976156, 'variance': 0.000125}, 'location': {'height': 16, 'left': 26, 'top': 112, 'width': 45}, 'word_name': 'Name', 'word': '劉凱敏'}], 'templateSign': '6def20f811df8072292e39aa2ea382cb', 'templateName': 'airticket', 'scores': 1.0, 'isStructured': True, 'logId': '156862155738090', 'clockwiseAngle': 0.0}, 'error_code': 0, 'error_msg': ''}

提取內容爲:

Name:劉凱敏

Total: cNY320.0

Number: 8472412222853

測試下來,總體識別效果不錯。

5.測試結論和建議

通過測試發現,總體識別效果很好。對於自定義票據有很強的識別能力。該功能大大的擴展了iOCR的識別範圍,對業務中的各類票據均可以進行識別。對各種發票、收據、銀行對帳單、承兌匯票等經常使用財務票據進行模板製做,實現自動分類和結構化識別及財稅場景的自動化,能夠有效下降企業人力成本,控制業務風險。

還有一個建議就是但願能在錄入模板的時候,提供智能選擇功能,一鍵把全部識別出來的內容都選出來,而後讓用戶在這個基礎上進行調整,加快模板的開發速度。

相關文章
相關標籤/搜索