本文介绍了调用图片异步检测接口识别卡证票据分类OCR的方法。卡证票据分类OCR能够自动识别出图片包含哪种类型的卡证或票据,以及其中的文字信息,并以结构化的方式返回文字内容。如果您仅知道图片中包含卡证或票据,但是不知道卡证或票据的类型,推荐您使用该场景。
卡证票据分类OCR目前支持识别以下卡证或票据类型:身份证、驾驶证、行驶证、银行开户许可证、户口簿户主页、户口簿常住人口页、不动产证、房产证明、火车票、出租车票、定额发票、汽车购置发票。
(图片异步检测)使用说明
业务接口:/green/image/asyncscan,表示图片异步检测。
您可以调用该接口创建图片异步检测任务。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览。
计费信息:
该接口为收费接口。关于计费方式,请参见内容安全产品定价。
检测超时:
同步检测允许的最长检测时间是6秒,如果检测在该时间限制内没有完成,系统会强制返回超时错误码。如果您对实时性要求不高,可以选择异步检测,其他情况下请选择同步检测,同步检测接口的调用相对简单些。对于同步检测接口的调用,建议您将超时时间设置为6秒。
返回结果:
异步检测任务不会实时返回检测结果,您需要通过callback或者轮询的方式获取检测结果。检测结果最长保留一小时。
callback获取检测结果:提交异步检测任务时,在请求参数中传入callback参数,用来自动接收检测结果,具体请参见(异步检测)请求参数。
轮询获取检测结果:提交异步检测任务时,无需传入callback参数;提交异步检测任务后,调用结果查询接口获取检测结果,具体请参见(图片异步检测结果查询)使用说明。
图片要求:
图片链接支持以下协议:HTTP和HTTPS。
图片支持以下格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
图片大小限制为20 MB以内(适用于同步和异步调用),高度或者宽度不能超过30,000像素(px),且图像总像素不超过2.5亿(px)。
说明其中,GIF格式的图片,图像总像素不超过4,194,304(px),高度或者宽度不能超过30,000像素(px)。
图片下载时间限制为3秒内,如果下载时间超过3秒,返回下载超时。
图片像素建议不低于256*256(px),像素过低可能会影响识别效果。
图片检测接口的响应时间依赖图片的下载时间。请保证被检测图片所在的存储服务稳定可靠,建议您使用阿里云OSS存储或者CDN缓存等。
QPS限制
本接口的单用户QPS限制为10次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。
(异步检测)请求参数
名称 | 类型 | 是否必须 | 示例值 | 描述 |
bizType | String | 否 | default | |
scenes | StringArray | 是 | ["ocr-classify"] | 指定检测场景,取值:ocr-classify。 |
callback | String | 否 | http://www.aliyundoc.com/xx.json | 检测结果回调通知您的URL,支持使用HTTP和HTTPS协议的地址。该字段为空时,您必须定时轮询检测结果。 callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksum和content。内容安全按照以下规则和格式设置checksum和content,调用您的callback接口返回检测结果。
说明 您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。 |
seed | String | 否 | aabbcc123 | 随机字符串,该值用于回调通知请求中的签名。 由英文字母、数字、下划线(_)组成,不超过64个字符。由您自定义,用于在接收到内容安全的回调通知时校验请求由阿里云内容安全服务发起。 说明 当使用callback时,该字段必须提供。 |
cryptType | String | 否 | SHA256 | 使用回调通知时(callback),设置对回调通知内容进行加密的算法。内容安全会将返回结果(由 用户uid + seed + content拼接的字符串)按照您设置的加密算法加密后,再发送到您的回调通知地址。取值:
|
tasks | JSONArray | 是 | 指定检测对象,JSON数组中的每个元素是一个检测任务结构体。最多支持100个元素,即每次提交100条内容进行检测,支持100个元素的前提是需要将并发任务调整到100个以上。关于每个元素的具体结构描述请参见task。 | |
extras | JSONObject | 否 | {"md5":"b826f8c0463604703e8036bbfc7e3f6d"} | 额外信息。无需传入该参数。 |
表 1. task
名称 | 类型 | 是否必须 | 示例值 | 描述 |
dataId | String | 否 | test_data_xxxx | 数据ID。需要保证在一次请求中所有的ID不重复。 |
url | String | 是 | https://www.aliyundoc.com/test_image_xxxx.png | 待检测图片的URL。 |
(异步检测)返回数据
名称 | 类型 | 示例值 | 描述 |
code | Integer | 200 | 错误码,和HTTP状态码一致。 更多信息,请参见公共错误码。 |
msg | String | OK | 请求信息的响应消息。 |
dataId | String | test_data_xxxx | 检测对象对应的数据ID。 说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId。 |
taskId | String | img6B61Qz8ykX76Fz2OpjVnss-1s**** | 检测任务的ID。 |
url | String | https://www.aliyundoc.com/test_image_xxxx.png | 检测对象的URL。 |
extras | JSONObject | {"md5":"b826f8c0463604703e8036bbfc7e3f6d"} | 额外调用参数,对应检测请求参数中的extras。 说明 该参数可能会被调整,目前请勿依赖该参数的返回值。 |
(异步检测)示例
请求示例
http(s)://[Endpoint]/green/image/asyncscan
&<公共请求参数>
{
"scenes": [
"ocr-classify"
],
"tasks": [
{
"dataId": "test_data_xxxx",
"url": "https://www.aliyundoc.com/test_image_xxxx.png"
}
]
}正常返回示例
{
"code": 200,
"msg": "OK",
"requestId": "92AD868A-F5D2-4AEA-96D4-E1273B8E074C",
"data": [
{
"code": 200,
"msg": "OK",
"dataId": "test_data_xxxx",
"taskId": "img5A@k7a@B4q@6K@d9nfKgOs-1s****",
"url": "https://www.aliyundoc.com/test_image_xxxx.png"
}
]
}(图片异步检测结果查询)使用说明
业务接口:/green/image/results,表示查询图片异步检测结果。
您可以调用该接口查询图片异步检测任务的结果。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览。
计费信息:
该接口不计费。
查询超时:
建议您将查询间隔设置为30秒(即在提交异步检测任务30秒后查询结果),最长不能超出4个小时,否则结果将会丢失。
QPS限制
本接口的单用户QPS限制为10次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。
(结果查询)请求参数
名称 | 类型 | 是否必须 | 示例值 | 描述 |
body | JSONArray | 是 | ["taskId1"] | 要查询的检测任务的taskId列表。数组中的元素个数不超过100个。 您在提交检测任务后,可以从返回数据中获取检测任务的taskId。 |
(结果查询)返回数据
名称 | 类型 | 示例值 | 描述 |
code | Integer | OK | 错误码,和HTTP状态码一致。 更多信息,请参见公共错误码。 |
msg | String | OK | 请求信息的响应消息。 |
dataId | String | test_data_xxxx | 检测对象对应的数据ID。 说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId。 |
taskId | String | img6B61Qz8ykX76Fz2OpjVnss-1s$Kaw | 检测任务的ID。 |
url | String | https://www.aliyundoc.com/test_image_xxxx.png | 检测对象的URL。 |
extras | JSONObject | {"md5":"b826f8c0463604703e8036bbfc7e3f6d"} | 额外调用参数,对应检测请求参数中的extras。 说明 该参数可能会被调整,目前请勿依赖该参数的返回值。 |
results | JSONArray | 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述请参见result。 |
表 2. result
名称 | 类型 | 示例值 | 描述 |
scene | String | ocr | 检测场景,取值:ocr。 |
label | String | ocr | 检测结果的分类。取值:
|
suggestion | String | review | 建议用户执行的操作,取值:
|
rate | Float | 99.91 | 在OCR图文识别场景中,可以不用关注该返回值。 |
ocrCardInfo | Object | 自动识别出来的卡证或票据OCR信息,包含身份证、驾驶证、行驶证、银行开户许可证、户口簿户主页、户口簿常住人口页、不动产证、房产证明、火车票、出租车票、定额发票、汽车购置发票。具体结构请参见ocrCardInfo。 |
ocrCardInfo
表 3. 身份证信息(idCardInfo)
名称
类型
示例值
描述
name
String
张三
姓名。
nationality
String
汉
民族。
number
String
xxx
身份证号。
birth
String
2000-01-01
出生日期。格式:yyyy-MM-dd。
address
String
xxx
住址。
authority
String
xxx
签发机构。
endDate
String
2010-06-30
有效期结束日期。格式:yyyy-MM-dd。
说明该字段可能返回以下值:长期。
表 4. 驾驶证信息(driverLicenseFrontInfo)
名称
类型
示例值
描述
name
String
张三
姓名。
number
String
123xxxxxxxxxxxxxxxx
驾驶证号。
birthDate
String
03月01日
出生日期
address
String
xx省xx市xx区xx街道xx号
住址。
nationality
String
中国
国籍
issueDate
String
2000年01月03日
初次领证日期
vehicleType
String
C1
准驾车型。
validStartDate
String
2000年01月01日
有效期开始时间,格式:yyyy-MM-dd。
validEndDate
String
2006年01月01日
有效期截止时间,格式:yyyy-MM-dd。
表 9. 行驶证正面信息(vehicleLicenseFrontInfo) 名称
类型
示例值
描述
plateNum
String
陕xxxxxx
车牌号。
vehicleType
String
小型普通客车
车辆类型。
owner
String
张XX
所有者名字。
useCharacter
String
非营运
车辆使用性质。
address
String
xx省xx市xx区xx街道xx号
住址。
model
String
东风日产牌ABCxxxxx
车辆品牌。
vin
String
ABCxxxxxxxx1234
车辆识别代号。
engineNum
String
12xxxxA
发动机号码。
registerDate
String
2022-01-01
注册日期,格式:YYYY-MM-DD。
issueDate
String
2022-01-01
发证日期,格式:YYYY-MM-DD。
表 14. 户口簿户主页信息 名称
类型
示例值
描述
locationNumber
String
xxx
地段号。
issueDate
String
2022年01月01日
签发日期。
householdType
String
居民户口
户别。
houseHolder
String
张XX
户主姓名。
address
String
广西xxx
住址。
community
String
xxx
户主社区。
householdNumber
String
xxx
户号。
undertaker
String
xxx
承办人签章。
type
String
household-head
卡证的类型,取值固定为household-head,表示户口簿户主页。
表 15. 户口簿常住人口页信息 名称
类型
示例值
描述
occupation
String
粮农
职业。
migrationDate1
String
2022年01月01日
何时由何地迁来本址。
idNumber
String
5****************9
身份证编号。
education
String
初中
文化程度。
birthPlace
String
xxx
出生地。
servicePremises
String
xxx
服务处所。
householdNumber
String
xxx
户号。
hometown
String
四川成都
籍贯。
name
String
张XX
姓名。
formerName
String
xxx
曾用名。
maritalStatus
String
未婚
婚姻状况。
nation
String
汉族
民族。
otherAddress
String
xxx
本市其他住址。
birthday
String
2020年01月01日
出生日期。
militaryService
String
xxx
兵役状况。
relationTo
String
户主
与户主关系。
religion
String
xxx
宗教信仰。
bloodType
String
B
血型。
registerDate
String
2023年02月06日
登记日期。
height
String
xxx
身高。
migrationDate2
String
xxx县xxx乡xxx村xx迁来
何时何地迁来本市。
undertaker
String
xxx
承办人签章。
type
String
household-resident
卡证的类型,取值固定为household-resident,表示户口簿常住人口页。
表 5. 房产证明信息
名称
类型
描述
usage
String
用途、房屋用途。
rightType
String
权利类型。
location
String
坐落地址。
otherInfo
String
权利其他状况。
rightNumber
String
证号。
buildingUnitNumber
String
不动产单元号。
rightProperty
String
权利性质。
rightHolder
String
权利人。
sharedInfo
String
共有情况。
termLimit
String
使用期限、土地使用年限。
landNumber
String
丘权号。
area
String
面积。
constructionArea
String
房屋建筑面积。
rightProperty
String
土地权利性质、取得方式。
rightType
String
房屋权利类型。
area
String
建筑面积。
表 6. 火车票信息 名称 类型 示例值 描述 price String 0.0 票价。 ticketNumber String A000001 票号。 departureTime String 2019年01月01日00:00开 开车时间。 seatType String 二等座 座位类型。 trainNumber String G0000 车次。 departure String 始发站 出发站。 departurePhonics String Shifa 出发站拼音。 seatNumber String 01车01F号 座位号。 destination String 终到站 到达站。 destinationPhonics String Zhongdao 到达站拼音。 passengerInfo String 1234567890****0000姓名 旅客信息。 type String train-ticket 票据的类型,取值固定为train-ticket,表示火车票。 表 7. 出租车票信息 名称 类型 示例值 描述 actualCollection String 100 实收金额。 carNumber String A•T**** 车号。 date String 2008年9月16日 日期。 invoiceCode String 25000071**** 发票代码。 invoiceNumbe String 5485G0**** 发票号码。 mileage String 42.0km 里程。 amount String 100 金额。 getOffTime String 16:58 下车时间。 boardingTime String [K068016:50 上车时间。 totalAmount String 100 合计。 type String taxi-ticket 票据的类型,取值固定为taxi-ticket,表示出租车票。 表 5. 定额发票信息 名称 类型 示例值 描述 amountInWords String 壹佰元 大写金额。 invoiceSerial String 发票代码解析。 amountInFigures String 100 小写金额。 invoiceNumber String 0145**** 发票号码。 invoiceCode String 15113159**** 发票代码。 batchNumber String 01 批次号。 year String 2015 年份。 taxBureauCode String 国税 税务局代码。 invoiceIndustryCode String None 发票行业代码。 amountVersion String 电脑版 金额版。 regionalismCode String 南充市 行政区划代码。 invoiceCategoryCode String 发票换票证 发票类别代码。 type String quota-invoice 票据的类型,取值固定为quota-invoice,表示定额发票。 表 6. 汽车购置发信息
名称
类型
描述
invoicingDate
String
开票日期。
certificateNo
String
合格证号。
phoneNo
String
销货单位电话。
importNo
String
进口证明书号。
seller
String
销货单位名称。
taxDept
String
主管税务机关。
taxCode
String
主管税务代码。
bankName
String
销货单位开户银行。
totalAmount
String
价税合计(小写)。
vehicleType
String
车辆类型。
invoiceNo
String
发票号码。
engingNo
String
发动机号码。
sellerAddr
String
销货单位地址。
taxRate
String
增值税税率或征收率。
vehicleNo
String
车辆识别代号、车架号码。
serialExcludeTax
String
完税凭证号码。
buyerCode
String
购买方身份证号码、组织机构代码。
sellerAccount
String
销货单位账号。
sellerTaxId
String
销货单位纳税人识别号。
amountInWords
String
价税合计(大写)。
invoiceCode
String
发票代码。
taxDeptAndCode
String
主管税务机关及代码。
origin
String
产地。
priceExcludeTax
String
不含税价。
buyer
String
购买方名称。
tax
String
增值税税额。
inspectionNo
String
商检单号。
buyerTaxId
String
购买方纳税人识别号。
tonnage
String
吨位。
capacity
String
限乘人数。
model
String
厂牌型号。
(结果查询)示例
请求示例
http(s)://[Endpoint]/green/image/results
&<公共请求参数>
[
"img5A@k7a@B4q@6K@d9nfKgOs-1s****"
]正常返回示例
以身份证、驾驶证、行驶证、房产证明和汽车购置发票为例。其他类型的卡证或票据结果示例,请参见结构化卡证OCR示例、结构化票据OCR示例。
身份证信息
{ "msg": "OK", "code": 200, "data": [ { "msg": "OK", "code": 200, "dataId": "test_data_xxxx", "extras": { "md5": "b826f8c0463604703e8036bbfc7e3f6d" }, "results": [ { "rate": 99.91, "suggestion": "review", "label": "ocr", "ocrCardInfo": { "number": "***", "address": "***", "nationality": "*", "name": "***", "birth": "1989年9月28日", "type": "id-card" }, "scene": "ocr-classify" } ], "taskId": "img5A@k7a@B4q@6K@d9nfKgOs-1s****", "url": "https://www.aliyundoc.com/test_image_xxxx.png" } ], "requestId": "63134F39-EA65-471C-A571-35F72BCE9C79" }驾驶证信息
{ "msg": "OK", "code": 200, "data": [ { "msg": "OK", "code": 200, "dataId": "test_data_xxxx", "extras": { "md5": "4c79bf6a1c831b12f88235b6dcfb59d5" }, "results": [ { "rate": 99.91, "suggestion": "review", "label": "ocr", "ocrCardInfo": { "number": "", "address": "xx省xx市路13号", "nationality": "中国", "name": "", "validStartDate": "2013-02-02", "type": "driver-license", "issueDate": "1994-02-02", "validEndDate": "2013-02-02至2023-02-02", "birthDate": "出生月期", "issueUnit": "XX省xx市公安局交视日期通警察支队透氧车型", "vehicleType": "A1A2" }, "scene": "ocr-classify" } ], "taskId": "img5A@k7a@B4q@6K@d9nfKgOs-1s****", "url": "https://www.aliyundoc.com/test_image_xxxx.png" } ], "requestId": "9BCCD309-7166-468E-9F4C-629D032A50EE" }行驶证信息
{ "msg": "OK", "code": 200, "data": [ { "msg": "OK", "code": 200, "dataId": "test_data_xxxx", "extras": { "md5": "ac094bb290155692a3c340d15e905fcf" }, "results": [ { "rate": 99.91, "suggestion": "review", "label": "ocr", "ocrCardInfo": { "owner": "***", "address": "xx市xx区xx庄145号", "useCharacter": "非营运", "engineNum": "***", "vin": "***", "model": "别克牌SGM716xxxx", "type": "vehicle-license", "issueDate": "2012-01-06", "plateNum": "京", "vehicleType": "小型轿车", "registerDate": "2008-10-16" }, "scene": "ocr-classify" } ], "taskId": "img5A@k7a@B4q@6K@d9nfKgOs-1s****", "url": "https://www.aliyundoc.com/test_image_xxxx.png" } ], "requestId": "CFAF124B-8D0A-46A2-8730-E20EE26B5F8D" }房产证明信息
{ "msg": "OK", "code": 200, "data": [ { "msg": "OK", "code": 200, "dataId": "test_data_xxxx", "extras": { "md5": "de8f8ad850c2f74b3b96934f43de8bdb" }, "results": [ { "rate": 99.91, "suggestion": "review", "label": "ocr", "ocrCardInfo": { "rightHolder": "", "area": "", "termLimit": "年月日", "sharedInfo": "是", "usage": "年月日", "location": "在_省_市_(镇)", "rightProperty": "平方半上述房屋的所有权人是", "type": "estate-cert", "rightType": "房屋产权证明范本" }, "scene": "ocr-classify" } ], "taskId": "img5A@k7a@B4q@6K@d9nfKgOs-1s****", "url": "https://www.aliyundoc.com/test_image_xxxx.png" } ], "requestId": "DEECF4C5-316E-468A-831D-507E763A9B02" }汽车购置发票信息
{ "msg": "OK", "code": 200, "data": [ { "msg": "OK", "code": 200, "dataId": "test_data_xxxx", "extras": { "md5": "bc7f974425efe6732a84984ac3e24fc7" }, "results": [ { "rate": 99.91, "suggestion": "review", "label": "ocr", "ocrCardInfo": { "seller": "xx服务有限公司", "amountInWords": "69900", "priceExcludeTax": "59743.59", "taxDept": "xx市xx区国家税务局第二税务分局", "origin": "安徽", "inspectionNo": "", "bankName": "建行xx市分行", "type": "car-invoice", "sellerAddr": "xx市xx大道", "phoneNo": "028-266**", "buyerTaxId": "51021219821**", "capacity": "5", "invoicingDate": "2014-07-29", "taxDeptAndCode": "xx市xx区国家税务局第二税务分局1512002xxxx", "importNo": "", "serialExcludeTax": "¥59743.59小写", "sellerAccount": "5100168**", "sellerTaxId": "5120027**", "tonnage": "", "model": "**牌SQR716**", "invoiceNo": "0092xxxx", "vehicleType": "轿车", "engineNo": "AAEE0xxxx", "tax": "10156.41", "taxCode": "***", "certificateNo": "***", "invoiceCode": "**", "buyerCode": "***", "buyer": "***", "totalAmount": "69900.00", "taxRate": "17%", "vehicleNo": "***" }, "scene": "ocr-classify" } ], "taskId": "img5A@k7a@B4q@6K@d9nfKgOs-1s****", "url": "https://www.aliyundoc.com/test_image_xxxx.png" } ], "requestId": "D4E2ADEE-EFEC-42C8-8399-5BBEA79F9524" }