記錄名片識(shí)別和圖片轉(zhuǎn)文字。
騰訊AI開(kāi)放平臺(tái)提供的名片OCR很強(qiáng)大, 而且可以免費(fèi)使用, 所以本文使用的是騰訊AI開(kāi)放平臺(tái)。
騰訊AI開(kāi)放平臺(tái)API調(diào)用需要注意簽名方法, 請(qǐng)查看之前文章傳送門(mén)
名片OCR API
import logging
logger = logging.getLogger(__name__)
import base64
import time
import requests
import json
def bc_ocr(_path = None, _byte = None):
''' 騰訊AI名片識(shí)別
_path和_byte必須存在一個(gè), 優(yōu)先級(jí) _byte > _path
:param _path:
:param _bytes:
:return:
'''
try:
if _path is None and _byte is None: return
if _byte is None:
with open(_path, 'rb') as f:
_byte = f.read()
if _byte is None: return
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
b_str = base64.b64encode(_byte)
params = {'app_id': APP_ID, 'time_stamp':int(time.time()), 'nonce_str': 'fa577ce340859f9fe', 'image': b_str}
sign = get_sign_code(params, API_KEY)
params['sign'] = sign
url = 'https://api.ai.qq.com/fcgi-bin/ocr/ocr_bcocr'
rt = requests.post(url, data=params)
jsonData = json.loads(rt.text)
logger.info('騰訊名片OCR結(jié)果:[{}]'.format(jsonData))
if jsonData.get('ret') == 0:
return jsonData.get('data')
except Exception as e:
logger.error('tencen business_card_ocr error [{}]'.format(e))
通用圖片識(shí)別 API
import logging
logger = logging.getLogger(__name__)
import base64
import time
import requests
import json
def ocr(_path = None, _byte = None):
'''騰訊 圖片識(shí)別
_path和_byte必須存在一個(gè), 優(yōu)先級(jí) _byte > _path
:param _path:
:param _byte:
:return:
'''
try:
if _path is None and _byte is None: return
if _byte is None:
with open(_path, 'rb') as f:
_byte = f.read()
if _byte is None: return
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
image_str = base64.b64encode(_byte)
url = 'https://api.ai.qq.com/fcgi-bin/ocr/ocr_generalocr'
params = {'app_id': APP_ID, 'time_stamp':int(time.time()), 'nonce_str': 'fa577ce340859f9fe', 'image': image_str}
sign = get_sign_code(params, API_KEY)
params['sign'] = sign
rt = requests.post(url, data=params)
jsonData = json.loads(rt.text)
if jsonData.get('ret') == 0:
item_list = jsonData.get('data').get('item_list')
return '\r\n'.join([item.get('itemstring') for item in item_list])
except Exception as e:
logger.error('tencen ocr error [{}]'.format(e))