报告单OCR
通过接口调用提交OCR识别任务,并通过接口查询任务完成状态。
- 可识别内容:化验单、体检报告
- 页面布局:
SINGLE
DOUBLE
TABLE
- 任务状态:
CREATED
PROCESSING
DONE
ERROR
创建任务
POST /tasks/?
- format: full(详细信息),不传该参数则返回简单信息
请求数据包
{
"task_id": "some_uuid", // 任务id
"img_url": "azure_blob_share_url", // 图片分享链接
"layout": "SINGLE|DOUBLE|TABLE", // (可选) 表示报告单页面布局类型
"callback_url": null // (可选) 任务完成后回调(例如:任务完成通知)
}
补充说明:
task_id
需要调用放根据自己的业务规则生成全局唯一的uuid
,建议使用图片文件的hash
;img_url
需要get
请求能直接打开,不需要额外设置HTTP头中的字段。推荐使用 Azure Blob Stroage 的分享临时签名(SAS);callback_url
需要get
请求能直接打开;
测试用img_url:
页面布局 | 样例 |
---|---|
单列报告单 (SINGLE) | Single24.jpg |
双列报告单 (DOUBLE) | Double01.jpg |
表格报告单 (TABLE) | Table04.jpg |
成功返回 HTTP 200
返回简化后的信息(result结果只有检查项的名字和值)
{
"task_id": "some_uuid", // 和提交的值相同
"img_url": "azure_blob_share_url", // 和提交的值相同
"callback_url": "callback_url", // 和提交的值相同
"layout": "SINGLE|DOUBLE|TABLE", // 和提交的值相同
"datetime": "ISOString", // 任务创建的时刻
"status": "CREATED", // 任务已创建,尚未开始处理
"error": "", // 新创建的任务暂无错误
"result": {} // 新创建的任务暂无结果
}
返回详细信息
{
"task_id": "some_uuid", // 和提交的值相同
"img_url": "azure_blob_share_url", // 和提交的值相同
"callback_url": "callback_url", // 和提交的值相同
"layout": "SINGLE|DOUBLE|TABLE", // 和提交的值相同
"datetime": "ISOString", // 任务创建的时刻
"status": "CREATED", // 任务已创建,尚未开始处理
"error": "", // 新创建的任务暂无错误
"result": {} // 新创建的任务暂无结果
}
失败返回 HTTP 400
{"detail": "失败原因,例如:missing key img_url"}
查询任务
GET /tasks/<task_id>?
- format: full(详细信息),不传该参数则返回简单信息
成功返回 HTTP 200
图像成功识别,以及因为图像质量不达要求的返回都是HTTP 200
。质量不达标的图片识别结果通过 status=ERROR
和 error
字段来标识。
图像质量合格
{
// 简化后的结构
"task_id": "task_id", // 任务id,从消息内容中得到
"img_url": "img_url", // 图片分享链接,从消息内容中得到
"callback_url": "callback_url", // 任务完成后回调(例如:任务完成通知)
"layout": "layout_type", // 表示报告单页面布局类型
"datetime": "ISOString", // 任务创建的时刻
"status": "DONE", // 任务处理状态
"error": "", // ocr错误信息,无错误时为""
"result": { // 任务处理结果,"status" 值不为 DONE 时,"result" 为空字典{}
"WBC": 6.1 // 指标英文标准名:指标数值
"other samples......"
}
}
format=full
后返回的详细信息
{
"task_id": "task_id", // 任务id,从消息内容中得到
"img_url": "img_url", // 图片分享链接,从消息内容中得到
"callback_url": "callback_url", // 任务完成后回调(例如:任务完成通知)
"layout": "layout_type", // 表示报告单页面布局类型
"datetime": "ISOString", // 任务创建的时刻
"status": "DONE", // 任务处理状态
"error": "", // ocr错误信息,无错误时为""
"result": { // 任务处理结果,"status" 值不为 DONE 时,"result" 为 空字典{}
"WBC": [ // 同一张体检报告可能有多行被检出同属于该指标项
{
"sim": 1, // 相似度
"idx": 1, // 指标名称在 coords 中的位置
"value": 6.1, // 指标数值
"idx_of_value": 2, // 指标数值在 line 中的位置(第几个 block)
"coords": [ // "coords" 是与指标名同一行的所有数据 block 的坐标列表
[101, 873, 438, 965], [942, 869, 1048, 928], [1341, 853, 1433, 910]
]
},
{
"sim": 0.9,
"idx": 0,
"idx_of_value": 2,
"value": null,
"coords": [[101, 873, 438, 965], [942, 869, 1048, 928], [1341, 853, 1433, 910]]
}
],
"other samples......"
}
}
图像质量不合格
IMAGE_PIXEL_ERROR
: 图像分辨率低IMAGE_SIZE_ERROR
: 图像文件体积太小IMAGE_DEFINITION_ERROR
: 图像清晰度低 返回格式如下:
{
"status": "ERROR", // 任务处理状态:CREATED|PROCESSING|DONE|ERROR
"error": "image_error_message", // 错误消息
"result": {} // 出错时无结果,为{}
// 其余字段与图像正确识别时返回一致...
}
附注:不同模式下图像质量要求
- "SINGLE": 图像分辨率大于 30PPI,图像文件大于50kb
- "DOUBLE": 图像分辨率大于 50PPI,图像文件大于60kb
- "TABLE": 图像分辨率大于 60PPI,图像文件大于60kb
- "DEFAULT": 图像分辨率大于 50PPI,图像文件大于60kb
"error": "image_error_message"中会返回关于图像阈值的详细信息,如与文档冲突,以error message为准
失败返回 HTTP 404
{"detail": "task not exists"}