由於公司需要識別發票信息並錄入到公司內部系統,故使用了騰訊雲的OCR-通用印刷體識別
騰訊雲的通用印刷體識別是1000/月的免費次數,對於需求不高的發票識別是比較友好的。
以下是接口鏈接
https://cloud.tencent.com/document/product/866/17600
以下是參考鏈接
https://www.cnblogs.com/d-l-k/p/8758555.html
以下為我的項目架構
以下為正文
#!/usr/bin/python2.7
# _*_ coding: utf-8 _*_
"""
@Author: MarkLiu
"""
import requests
import hmac
import hashlib
import base64
import time
import random
import re
appid = "" # https://console.cloud.tencent.com/cam/capi 中的APPID
bucket = "" # 隨意寫一個就好
secret_id = "" # https://console.cloud.tencent.com/cam/capi 中的SecretId
secret_key = "" # https://console.cloud.tencent.com/cam/capi 中的SecretKey
expired = time.time() + 2592000
onceExpired = 0
current = time.time()
rdm = ''.join(random.choice("0123456789") for i in range(10))
userid = "0"
fileid = "tencentyunSignTest"
info = "a=" + appid + "&b=" + bucket + "&k=" + secret_id + "&e=" + str(expired) + "&t=" + str(current) + "&r=" + str(rdm) + "&u=0&f="
signindex = hmac.new(secret_key, info, hashlib.sha1).digest() # HMAC-SHA1加密
sign = base64.b64encode(signindex + info) # base64轉碼
url = "http://recognition.image.myqcloud.com/ocr/general"
headers = {'Host': 'recognition.image.myqcloud.com',
"Authorization": sign,
}
files = {
'appid': (None, appid),
'bucket': (None, bucket),
'image': ('new_scan_doc01075720181122112953_001.jpg', open('C:\\Users\\Administrator\\PycharmProjects\\untitled\\untitled\\mysite\\static\\new_scan_doc01075720181122112953_001.jpg', 'rb'), 'image/jpeg')
}
r = requests.post(url, files=files, headers=headers)
responseinfo = r.content
responseinfo = responseinfo.decode('utf-8') # 解決中文亂碼
r_index = r'itemstring":"(.*?)"' # 做一個正則匹配
result = re.findall(r_index, responseinfo)
for i in result:
print i
之后運行文件,輸入python aa.py runserver即可識別
基本都可以識別出來,如需線上使用提供接口即可