功能介绍
百度火车票识别支持对红、蓝火车票的13个关键字段进行结构化识别。可以应用于企业税务核算及内部报销等场景,能够有效减少人工核算工作量,降低人力成本,实现财税报销的自动化。也可以应用于个人行程规划与记录类移动应用,高效准确的识别服务可以满足用户快速录入行程信息的需求,有效降低用户输入成本,提升用户使用体验。
接口描述
支持对红、蓝火车票的13个关键字段进行结构化识别
帮助地址:https://ai.baidu.com/ai-doc/OCR/Ok3h7y35u
请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/train_ticket
请求参数:
image:图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式
返回示例
{
"log_id": "12317512659",
"direction": 1,
"words_result_num": 13,
"words_result": {
"id_num": "2302051998****156X",
"name": "裴一丽",
"ticket_rates": "¥54.5元",
"destination_station": "天津站",
"seat_category": "二等座",
"sales_station": "北京南",
"ticket_num": "F05706",
"seat_num": "02车03C号",
"time": "09:36",
"date": "2019年04月03日",
"serial_number": "10010300067846",
"train_num": "C255",
"starting_station": "北京南站"
}
}
代码实现(python3):
import urllib
import base64
import json
import time
#client_id 为官网获取的AK, client_secret 为官网获取的SK
client_id = 'XXXXXXXX'
client_secret = 'XXXXXXXXX'
#获取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()
if token_content:
token_info = json.loads(token_content)
token_key = token_info['access_token']
return token_key
#filename:图片名(本地存储包括路径)
def analysis_train_ticket(filename):
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/train_ticket"
# 二进制方式打开图片文件
f = open(filename, 'rb')
img = base64.b64encode(f.read())
params = dict()
params['image'] = img
params['show'] = 'true'
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.decode('utf-8')
data = json.loads(content)
words_result=data['words_result']
print ('车票号:',words_result['ticket_num'])
print ('始发站:',words_result['starting_station'])
print ('车次号:',words_result['train_num'])
print ('到达站:',words_result['destination_station'])
print ('出发日期:',words_result['date'])
print ('车票金额:',words_result['ticket_rates'])
print ('席别:',words_result['seat_category'])
print ('乘客姓名:',words_result['name'])
analysis_train_ticket('../img/ticket1.jpg')
测试结果及评价
处理时长:1.53秒
分析结果
车票号: E014470
始发站: 天津站
车次号: C2038
到达站: 北京南站
出发日期: 2019年09月28日
车票金额: ¥54.5元
席别: 二等座
乘客姓名: 赵璇丽
经过评测发现调用速度很快,识别内容很准确。