RecognizeTrainInvoice - 火车票识别

支持包括票号、出发站、到达站、开车时间、票价、座位类型、旅客信息、座位号、车次等字段结构化识别输出。

接口说明

本接口适用场景

  • 阿里云火车票识别,是阿里云官方自研 OCR 文字识别产品,适用于识别火车票上车次、座位号、旅客信息、座位类型、票价等关键信息的场景。
  • 阿里云 OCR 产品基于阿里巴巴达摩院强大的 AI 技术及海量数据,历经多年沉淀打磨,具有服务稳定、操作简易、实时性高、能力全面等几大优势。
  • 本接口图片示例

本接口核心能力

分类概述
图片格式支持 PNG、JPG、JPEG、BMP、GIF、TIFF、WebP、OFD、PDF。
图像增强默认支持图像增强,包括图像自动旋转、畸变自动矫正、模糊图片自动增强等能力。
多类型覆盖支持模糊、光照不均、透视畸变、任意背景等低质量图像识别。
高精度识别总体识别准确率可达 98%。

如何使用本接口

步骤概述
1开通 票据凭证识别 服务。开通服务前后,您可以通过体验馆免费体验本功能识别效果。
2购买火车票识别资源包。本 API 会赠送免费额度,可使用免费额度测试。您也可以不购买资源包,系统会通过“按量付费”方式按实际调用量自动扣款。
3可以参照调试页面提供的代码示例完成 API 接入开发。接入完成后,调用 API 获取识别结果。如果使用子账号调用接口,需要阿里云账号(主账号)对 RAM 账号进行授权。创建 RAM 用户的具体操作,请参考:创建 RAM 用户。文字识别服务提供一种系统授权策略,即 AliyunOCRFullAccess。具体授权操作,请参见在用户页面为 RAM 用户授权。

重要提示

类型概述
图片格式
  • 本接口支持:PNG、JPG、JPEG、BMP、GIF、TIFF、WebP、OFD、PDF 格式。
图片尺寸
  • 图片长宽需要大于 15 像素,小于 8192 像素。
  • 长宽比需要小于 50。
  • 如需达到较好识别效果,建议长宽均大于 500px。
  • 图片尺寸过小,会影响识别精度。图片内单字大小在 10-50px 内时,识别效果较好。
图片大小
  • 图片二进制文件不能超过 10MB。
  • 图片过大会影响接口响应速度,建议使用小于 1.5M 图片进行识别,且通过传图片 URL 的方式调用接口。
相关能力

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
ocr:RecognizeTrainInvoice
*全部资源
*

请求参数

名称类型必填描述示例值
Urlstring
  • 本字段和 body 字段二选一,不可同时透传或同时为空。
  • 图片链接(长度不超 2048 字节,不支持 base64)。
https://img.alicdn.com/tfs/TB1u1HrUmzqK1RjSZFpXXakSXXa-1200-900.jpg
bodybyte
  • 本字段和 URL 字段二选一,不可同时透传或同时为空。
  • 图片二进制文件,最大 10MB。
  • 使用 HTTP 方式调用,把图片二进制文件放到 HTTP body 中上传即可。
  • 使用 SDK 的方式调用,把图片放到 SDK 的 body 中即可。
图片二进制

返回参数

名称类型描述示例值
object

Schema of Response

RequestIdstring

请求唯一 ID

43A29C77-405E-4CC0-BC55-EE694AD00655
Datastring

返回数据

{"data": {"departureStation": "杭州东站", "arrivalStation": "南京南站", "trainNumber": "G7608", "departureTime": "2016年10月15日14:10开", "seatNumber": "12车05F号", "fare": "117.5", "seatType": "二等座", "passengerInfo": "3201061982****0417曹思培", "passengerName": "曹思培", "ticketNumber": "12H010481", "ticketCode": "90041000121016H010481", "saleInfo": "杭州东站售", "ticketGate": "检票口3A"}, "ftype": 0, "height": 900, "orgHeight": 900, "orgWidth": 1200, "prism_keyValueInfo": [{"key": "departureStation", "keyProb": 100, "value": "杭州东站", "valuePos": [{"x": 107, "y": 138}, {"x": 108, "y": 78}, {"x": 288, "y": 81}, {"x": 287, "y": 141}], "valueProb": 100}, {"key": "arrivalStation", "keyProb": 100, "value": "南京南站", "valuePos": [{"x": 576, "y": 147}, {"x": 578, "y": 87}, {"x": 760, "y": 90}, {"x": 759, "y": 151}], "valueProb": 100}, {"key": "trainNumber", "keyProb": 100, "value": "G7608", "valuePos": [{"x": 379, "y": 140}, {"x": 379, "y": 96}, {"x": 537, "y": 99}, {"x": 537, "y": 144}], "valueProb": 100}, {"key": "departureTime", "keyProb": 100, "value": "2016年10月15日14:10开", "valuePos": [{"x": 72, "y": 221}, {"x": 73, "y": 179}, {"x": 467, "y": 187}, {"x": 466, "y": 230}], "valueProb": 100}, {"key": "seatNumber", "keyProb": 100, "value": "12车05F号", "valuePos": [{"x": 564, "y": 233}, {"x": 565, "y": 193}, {"x": 734, "y": 195}, {"x": 733, "y": 235}], "valueProb": 100}, {"key": "fare", "keyProb": 99, "value": "117.5", "valuePos": [{"x": 242, "y": 233}, {"x": 242, "y": 271}, {"x": 78, "y": 273}, {"x": 77, "y": 234}], "valueProb": 99}, {"key": "seatType", "keyProb": 100, "value": "二等座", "valuePos": [{"x": 729, "y": 241}, {"x": 730, "y": 282}, {"x": 620, "y": 283}, {"x": 619, "y": 242}], "valueProb": 100}, {"key": "passengerInfo", "keyProb": 100, "value": "3201061982****0417曹思培", "valuePos": [{"x": 69, "y": 422}, {"x": 69, "y": 376}, {"x": 567, "y": 382}, {"x": 566, "y": 428}], "valueProb": 100}, {"key": "passengerName", "keyProb": 100, "value": "曹思培", "valuePos": [{"x": 69, "y": 422}, {"x": 69, "y": 376}, {"x": 567, "y": 382}, {"x": 566, "y": 428}], "valueProb": 100}, {"key": "ticketNumber", "keyProb": 100, "value": "12H010481", "valuePos": [{"x": 55, "y": 77}, {"x": 56, "y": 33}, {"x": 318, "y": 39}, {"x": 317, "y": 83}], "valueProb": 100}, {"key": "ticketCode", "keyProb": 100, "value": "90041000121016H010481", "valuePos": [{"x": 74, "y": 565}, {"x": 75, "y": 530}, {"x": 404, "y": 536}, {"x": 403, "y": 571}], "valueProb": 100}, {"key": "saleInfo", "keyProb": 100, "value": "杭州东站售", "valuePos": [{"x": 425, "y": 572}, {"x": 426, "y": 530}, {"x": 603, "y": 535}, {"x": 602, "y": 576}], "valueProb": 100}, {"key": "ticketGate", "keyProb": 100, "value": "检票口3A", "valuePos": [{"x": 664, "y": 79}, {"x": 666, "y": 34}, {"x": 833, "y": 40}, {"x": 832, "y": 85}], "valueProb": 100}], "sliceRect": {"x0": 61, "y0": 93, "x1": 1016, "y1": 108, "x2": 1010, "y2": 708, "x3": 51, "y3": 696}, "width": 1200}
Codestring

错误码(如果识别成功,不会返回此字段)

noPermission
Messagestring

错误码(如果识别成功,不会返回此字段)

You are not authorized to perform this operation.

返回参数说明


字段类型说明
dataobject结构化信息。
sliceRectlist检测出的子图坐标信息。
prism_keyValueInfolist结构化信息的坐标信息。
ftypeint是否为复印件(1:是,0:否)。
heightint算法矫正图片后的高度。
widthint算法矫正图片后的宽度。
orgHeightint原图的高度。
orgWidthint原图的宽度。

识别结果(data 字段)

字段类型说明
departureStationstring出发站。
arrivalStationstring到达站。
trainNumberstring车次。
departureTimestring开车时间。
seatNumberstring座位号。
farestring票价。
ticketGatestring检票口。
seatTypestring座位类型。
passengerInfostring旅客信息。
passengerNamestring旅客姓名。
ticketNumberstring票号。
ticketCodestring售票码。
saleInfostring售票车站信息。

结构化坐标信息(prism_keyValueInfo 字段)

字段类型说明
keystring识别出的字段名称。
keyProbint字段名称置信度。
valuestring识别出的字段名称对应的值。
valueProbint字段名称对应值的置信度。
valuePoslist字段在原图中的四个点坐标(左上、右上、右下、左下)。

示例

正常返回示例

JSON格式

{
  "RequestId": "43A29C77-405E-4CC0-BC55-EE694AD00655",
  "Data": "{\"data\": {\"departureStation\": \"杭州东站\", \"arrivalStation\": \"南京南站\", \"trainNumber\": \"G7608\", \"departureTime\": \"2016年10月15日14:10开\", \"seatNumber\": \"12车05F号\", \"fare\": \"117.5\", \"seatType\": \"二等座\", \"passengerInfo\": \"3201061982****0417曹思培\", \"passengerName\": \"曹思培\", \"ticketNumber\": \"12H010481\", \"ticketCode\": \"90041000121016H010481\", \"saleInfo\": \"杭州东站售\", \"ticketGate\": \"检票口3A\"}, \"ftype\": 0, \"height\": 900, \"orgHeight\": 900, \"orgWidth\": 1200, \"prism_keyValueInfo\": [{\"key\": \"departureStation\", \"keyProb\": 100, \"value\": \"杭州东站\", \"valuePos\": [{\"x\": 107, \"y\": 138}, {\"x\": 108, \"y\": 78}, {\"x\": 288, \"y\": 81}, {\"x\": 287, \"y\": 141}], \"valueProb\": 100}, {\"key\": \"arrivalStation\", \"keyProb\": 100, \"value\": \"南京南站\", \"valuePos\": [{\"x\": 576, \"y\": 147}, {\"x\": 578, \"y\": 87}, {\"x\": 760, \"y\": 90}, {\"x\": 759, \"y\": 151}], \"valueProb\": 100}, {\"key\": \"trainNumber\", \"keyProb\": 100, \"value\": \"G7608\", \"valuePos\": [{\"x\": 379, \"y\": 140}, {\"x\": 379, \"y\": 96}, {\"x\": 537, \"y\": 99}, {\"x\": 537, \"y\": 144}], \"valueProb\": 100}, {\"key\": \"departureTime\", \"keyProb\": 100, \"value\": \"2016年10月15日14:10开\", \"valuePos\": [{\"x\": 72, \"y\": 221}, {\"x\": 73, \"y\": 179}, {\"x\": 467, \"y\": 187}, {\"x\": 466, \"y\": 230}], \"valueProb\": 100}, {\"key\": \"seatNumber\", \"keyProb\": 100, \"value\": \"12车05F号\", \"valuePos\": [{\"x\": 564, \"y\": 233}, {\"x\": 565, \"y\": 193}, {\"x\": 734, \"y\": 195}, {\"x\": 733, \"y\": 235}], \"valueProb\": 100}, {\"key\": \"fare\", \"keyProb\": 99, \"value\": \"117.5\", \"valuePos\": [{\"x\": 242, \"y\": 233}, {\"x\": 242, \"y\": 271}, {\"x\": 78, \"y\": 273}, {\"x\": 77, \"y\": 234}], \"valueProb\": 99}, {\"key\": \"seatType\", \"keyProb\": 100, \"value\": \"二等座\", \"valuePos\": [{\"x\": 729, \"y\": 241}, {\"x\": 730, \"y\": 282}, {\"x\": 620, \"y\": 283}, {\"x\": 619, \"y\": 242}], \"valueProb\": 100}, {\"key\": \"passengerInfo\", \"keyProb\": 100, \"value\": \"3201061982****0417曹思培\", \"valuePos\": [{\"x\": 69, \"y\": 422}, {\"x\": 69, \"y\": 376}, {\"x\": 567, \"y\": 382}, {\"x\": 566, \"y\": 428}], \"valueProb\": 100}, {\"key\": \"passengerName\", \"keyProb\": 100, \"value\": \"曹思培\", \"valuePos\": [{\"x\": 69, \"y\": 422}, {\"x\": 69, \"y\": 376}, {\"x\": 567, \"y\": 382}, {\"x\": 566, \"y\": 428}], \"valueProb\": 100}, {\"key\": \"ticketNumber\", \"keyProb\": 100, \"value\": \"12H010481\", \"valuePos\": [{\"x\": 55, \"y\": 77}, {\"x\": 56, \"y\": 33}, {\"x\": 318, \"y\": 39}, {\"x\": 317, \"y\": 83}], \"valueProb\": 100}, {\"key\": \"ticketCode\", \"keyProb\": 100, \"value\": \"90041000121016H010481\", \"valuePos\": [{\"x\": 74, \"y\": 565}, {\"x\": 75, \"y\": 530}, {\"x\": 404, \"y\": 536}, {\"x\": 403, \"y\": 571}], \"valueProb\": 100}, {\"key\": \"saleInfo\", \"keyProb\": 100, \"value\": \"杭州东站售\", \"valuePos\": [{\"x\": 425, \"y\": 572}, {\"x\": 426, \"y\": 530}, {\"x\": 603, \"y\": 535}, {\"x\": 602, \"y\": 576}], \"valueProb\": 100}, {\"key\": \"ticketGate\", \"keyProb\": 100, \"value\": \"检票口3A\", \"valuePos\": [{\"x\": 664, \"y\": 79}, {\"x\": 666, \"y\": 34}, {\"x\": 833, \"y\": 40}, {\"x\": 832, \"y\": 85}], \"valueProb\": 100}], \"sliceRect\": {\"x0\": 61, \"y0\": 93, \"x1\": 1016, \"y1\": 108, \"x2\": 1010, \"y2\": 708, \"x3\": 51, \"y3\": 696}, \"width\": 1200}",
  "Code": "noPermission",
  "Message": "You are not authorized to perform this operation."
}

错误码

访问错误中心查看更多错误码。

变更历史

变更时间变更内容概要操作
2021-08-17OpenAPI 入参发生变更查看变更详情