医疗发票OCR(备份)
<h3>接口描述</h3>
<ul>
<li>支持识别全国各地门诊/住院发票的业务流水号、发票号、住院号、门诊号、病例号、姓名、性别、社保卡号、金额大/小写、收款单位、省市、医保统筹支付、个人账户支付等关键字段,其中北京/广东/河北/河南/江苏/山东/上海/天津/浙江等地区票据识别效果较佳。支持识别收费项目明细,并可根据不同省市地区返回对应的识别参数。</li>
<li>格式为 jpg(jpeg),bmp,png,图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,</li>
<li>url图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px</li>
</ul>
<h3>请求地址</h3>
<p><code>https://api.jumdata.com/ocr/medicalInvoice</code></p>
<h3>请求方式</h3>
<ul>
<li>POST</li>
</ul>
<h3>请求格式</h3>
<ul>
<li>form-data</li>
</ul>
<h3>请求参数</h3>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>appId</td>
<td>varchar</td>
<td>是</td>
<td>服务商分配的唯一标识</td>
</tr>
<tr>
<td>timestamp</td>
<td>number</td>
<td>是</td>
<td>当前时间的毫秒数</td>
</tr>
<tr>
<td>sign</td>
<td>varchar</td>
<td>是</td>
<td>签名,见签名算法说明</td>
</tr>
<tr>
<td>file</td>
<td>file</td>
<td>否</td>
<td>医疗发票照片,文件类型,file、base64、url 必须提供一个</td>
</tr>
<tr>
<td>base64</td>
<td>varchar</td>
<td>否</td>
<td>照片base64字符串,file、base64、url 必须提供一个</td>
</tr>
<tr>
<td>url</td>
<td>varchar</td>
<td>否</td>
<td>照片 url,file、base64、url 必须提供一个</td>
</tr>
<tr>
<td>location</td>
<td>varchar</td>
<td>否</td>
<td>是否返回字段的位置信息,默认为 false,可缺省- false:不返回字段位置信息- true:返回字段的位置信息,包括上边距(top)、左边距(left)、宽度(width)、高度(height)</td>
</tr>
<tr>
<td>probability</td>
<td>varchar</td>
<td>否</td>
<td>是否返回字段识别结果的置信度,默认为 false,可缺省- false:不返回字段识别结果的置信度- true:返回字段识别结果的置信度,包括字段识别结果中各字符置信度的平均值(average)和最小值(min)</td>
</tr>
</tbody>
</table>
<h3>签名算法说明</h3>
<pre><code>sign = sha256( appId + appSecret + timestamp)</code></pre>
<p>用服务商分配的 appId、服务商分配的 appSecret,当前时间毫秒数 timestamp,按上述顺序拼接成字符串,再进行 sha256 哈希得到。如下:</p>
<pre><code class="language-java">String appId = "xyzxy2121zxyz";
String timestamp = "1555378976238";
String appSecret = "efcefcef1121cefcefc1212121";
String str = appId + appSecret + timestamp;
String sign = sha256(str);</code></pre>
<h3>正确返回样例</h3>
<pre><code class="language-json">{
"msg": "成功",
"code": 200,
"taskNo": "28570975257827964968",
"data": {
"words_result": {
"AmountInWords": {
"word": "壹拾陆元陆角"
},
"Sex": {
"word": "男"
},
"InsuranceType": {
"word": "自费"
},
"CostCategories": [
[
{
"name": "收费项目",
"word": "化验费"
},
{
"name": "金额",
"word": "12.00"
}
],
[
{
"name": "收费项目",
"word": "治疗费"
},
{
"name": "金额",
"word": "3.80"
}
]
],
"PaymentAmount": {
"word": ""
},
"Name": {
"word": ""
},
"SocialSecurityNum": {
"word": ""
},
"DischargeDate": {
"word": ""
},
"HospitalNum": {
"word": ""
},
"HospitalName": {
"word": "河北港口华团右脑公司口医院"
},
"RegionSupplement": [],
"ClinicNum": {
"word": "20200000000"
},
"AmountInFiguers": {
"word": "16.60"
},
"AdmissionDate": {
"word": ""
},
"HospitalType": {
"word": "收诊医疗"
},
"RefundAmount": {
"word": ""
},
"Date": {
"word": "2020年06月02日"
},
"ChargingUnit": {
"word": "):河北港口华团右脑公司口医院"
},
"CostDetail": [
[
{
"name": "编码",
"word": ""
},
{
"name": "项目",
"word": "卫生材料料"
},
{
"name": "规格",
"word": ""
},
{
"name": "数量",
"word": "1.00"
},
{
"name": "单价",
"word": ""
},
{
"name": "金额",
"word": "0.80"
}
],
[
{
"name": "编码",
"word": ""
},
{
"name": "项目",
"word": "丁粲使常规"
},
{
"name": "规格",
"word": ""
},
{
"name": "数量",
"word": "1.0"
},
{
"name": "单价",
"word": ""
},
{
"name": "金额",
"word": "3.00"
}
],
[
{
"name": "编码",
"word": ""
},
{
"name": "项目",
"word": "血补脱系酶测"
},
{
"name": "规格",
"word": ""
},
{
"name": "数量",
"word": "1.0"
},
{
"name": "单价",
"word": ""
},
{
"name": "金额",
"word": "9.00"
}
],
[
{
"name": "编码",
"word": ""
},
{
"name": "项目",
"word": "静脉注射(静脉采血)"
},
{
"name": "规格",
"word": ""
},
{
"name": "数量",
"word": "1.0"
},
{
"name": "单价",
"word": ""
},
{
"name": "金额",
"word": "3.80"
}
],
[
{
"name": "编码",
"word": ""
},
{
"name": "项目",
"word": "一次性采血器(国产一次"
},
{
"name": "规格",
"word": ""
},
{
"name": "数量",
"word": "1.0"
},
{
"name": "单价",
"word": ""
},
{
"name": "金额",
"word": "0.80"
}
]
],
"PrepayAmount": {
"word": ""
},
"HospitalDay": {
"word": ""
},
"PersonalPayment": {
"word": "0.00"
},
"BusinessNum": {
"word": "1130300202006421505242011130009"
},
"InsurancePayment": {
"word": ""
},
"DischargeDepartment": {},
"Payee": {
"word": ""
},
"RecordNum": {},
"InvoiceNum": {
"word": ""
}
},
"province": "河北",
"invoiceType": "门诊发票"
}
}</code></pre>
<h3>错误返回样例</h3>
<pre><code class="language-json">{
"msg": "图片格式错误,支持的图片格式为:PNG、JPG、JPEG、BMP",
"code": 400
}</code></pre>
<h3>返回字段说明</h3>
<table>
<thead>
<tr>
<th>字段名</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>成功为200,其它为失败返回码(非http返回状态码)</td>
</tr>
<tr>
<td>msg</td>
<td>code对应的描述</td>
</tr>
<tr>
<td>taskNo</td>
<td>唯一业务号</td>
</tr>
<tr>
<td>data</td>
<td>返回具体结果,object类型,详见data返回字段描述</td>
</tr>
</tbody>
</table>
<h3>返回参数</h3>
<table>
<thead>
<tr>
<th>字段名</th>
<th>是否必输出</th>
<th>类型</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>words_result</td>
<td>是</td>
<td>object</td>
<td>识别结果</td>
</tr>
<tr>
<td>+ BusinessNum</td>
<td>是</td>
<td>object</td>
<td>业务流水号</td>
</tr>
<tr>
<td>+ InvoiceNum</td>
<td>是</td>
<td>object</td>
<td>发票号码</td>
</tr>
<tr>
<td>+ HospitalNum</td>
<td>是</td>
<td>object</td>
<td>住院号</td>
</tr>
<tr>
<td>+ HospitalName</td>
<td>是</td>
<td>object</td>
<td>医院名称</td>
</tr>
<tr>
<td>+ RecordNum</td>
<td>是</td>
<td>object</td>
<td>病例号</td>
</tr>
<tr>
<td>+ HospitalDay</td>
<td>是</td>
<td>object</td>
<td>住院天数</td>
</tr>
<tr>
<td>+ AdmissionDate</td>
<td>是</td>
<td>object</td>
<td>入院时间</td>
</tr>
<tr>
<td>+ DischargeDate</td>
<td>是</td>
<td>object</td>
<td>出院时间</td>
</tr>
<tr>
<td>+ Name</td>
<td>是</td>
<td>object</td>
<td>姓名</td>
</tr>
<tr>
<td>+ Sex</td>
<td>是</td>
<td>object</td>
<td>性别</td>
</tr>
<tr>
<td>+ HospitalType</td>
<td>是</td>
<td>object</td>
<td>医疗机构类型</td>
</tr>
<tr>
<td>+ SocialSecurityNum</td>
<td>是</td>
<td>object</td>
<td>社保卡号</td>
</tr>
<tr>
<td>+ InsuranceType</td>
<td>是</td>
<td>object</td>
<td>医保类型</td>
</tr>
<tr>
<td>+ ChargingUnit</td>
<td>是</td>
<td>object</td>
<td>收款单位</td>
</tr>
<tr>
<td>+ Payee</td>
<td>是</td>
<td>object</td>
<td>收款人</td>
</tr>
<tr>
<td>+ Date</td>
<td>是</td>
<td>object</td>
<td>开票日期</td>
</tr>
<tr>
<td>+ AmountInWords</td>
<td>是</td>
<td>object</td>
<td>大写合计金额</td>
</tr>
<tr>
<td>+ AmountInFiguers</td>
<td>是</td>
<td>object</td>
<td>小写合计金额</td>
</tr>
<tr>
<td>+ InsurancePayment</td>
<td>是</td>
<td>object</td>
<td>医保统筹支付</td>
</tr>
<tr>
<td>+ PersonalPayment</td>
<td>是</td>
<td>object</td>
<td>个人账户支付</td>
</tr>
<tr>
<td>+ PrepayAmount</td>
<td>是</td>
<td>object</td>
<td>预缴金额</td>
</tr>
<tr>
<td>+ PaymentAmount</td>
<td>是</td>
<td>object</td>
<td>补缴金额</td>
</tr>
<tr>
<td>+ RefundAmount</td>
<td>是</td>
<td>object</td>
<td>退费金额</td>
</tr>
<tr>
<td>+ ClinicNum</td>
<td>是</td>
<td>object</td>
<td>门诊号</td>
</tr>
<tr>
<td>++ word</td>
<td>是</td>
<td>string</td>
<td>字段识别结果,以上各字段均包含此参数</td>
</tr>
<tr>
<td>++ location</td>
<td>是</td>
<td>object</td>
<td>字段位置信息,当请求参数 location=true 时,以上各字段均包含此参数</td>
</tr>
<tr>
<td>+++ top</td>
<td>是</td>
<td>uint32</td>
<td>字段的上边距</td>
</tr>
<tr>
<td>+++ left</td>
<td>是</td>
<td>uint32</td>
<td>字段的左边距</td>
</tr>
<tr>
<td>+++ height</td>
<td>是</td>
<td>uint32</td>
<td>字段的高度</td>
</tr>
<tr>
<td>+++ width</td>
<td>是</td>
<td>uint32</td>
<td>字段的宽度</td>
</tr>
<tr>
<td>++ probability</td>
<td>是</td>
<td>object</td>
<td>字段识别结果置信度,当请求参数 probability=true 时,以上各字段均包含此参数</td>
</tr>
<tr>
<td>+++ average</td>
<td>是</td>
<td>float</td>
<td>字段识别结果中各字符的置信度平均值</td>
</tr>
<tr>
<td>+++ min</td>
<td>是</td>
<td>float</td>
<td>字段识别结果中各字符的置信度最小值</td>
</tr>
<tr>
<td>+ CostCategories</td>
<td>是</td>
<td>array[]</td>
<td>项目大类:治疗费、检查费等项目大类</td>
</tr>
<tr>
<td>+ CostDetail</td>
<td>是</td>
<td>array[]</td>
<td>明细类别:药物/检查的明细类别</td>
</tr>
<tr>
<td>+ RegionSupplement</td>
<td>是</td>
<td>array[]</td>
<td>地区字段:根据省市返回改地区特有的字段</td>
</tr>
</tbody>
</table>
<h3>CostDetail字段包含多个array,每个数组包含多个object,见以下参数</h3>
<table>
<thead>
<tr>
<th>字段</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>++name</td>
<td>字段名,包括:编码、项目、规格、数量、单价、金额</td>
</tr>
<tr>
<td>++word</td>
<td>name字段对应的识别结果</td>
</tr>
</tbody>
</table>
<h3>RegionSupplement字段包含多个object,不同省市返回字段不同,见以下参数</h3>
<table>
<thead>
<tr>
<th>省市</th>
<th><div style="width:420px">返回参数(name)</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>北京</td>
<td>个人支付金额、其他医保支付、交易流水号、基金支付、单位补充险[原公疗]支付、年度门诊大额累计支付、本次医保范围内金额、本次支付后个人账户余额、残军补助支付、累计医保内范围金额、自付一、自付二、自费、起付金额、超封顶金额、退休补充支付、门诊大额支付</td>
</tr>
<tr>
<td>广东</td>
<td>个人支付金额、其他医保支付</td>
</tr>
<tr>
<td>河北</td>
<td>个人账户余额、统筹累计支付、自负、自费、起付标准</td>
</tr>
<tr>
<td>河南</td>
<td>个人支付金额、其他医保支付</td>
</tr>
<tr>
<td>江苏</td>
<td>个人支付金额、其他医保支付</td>
</tr>
<tr>
<td>山东</td>
<td>个人支付金额、其他医保支付</td>
</tr>
<tr>
<td>上海</td>
<td>分类自负、历年余额、本年余额、现金支付、自负、自费、附加支付</td>
</tr>
<tr>
<td>天津</td>
<td>个人支付金额、其他医保支付</td>
</tr>
<tr>
<td>浙江</td>
<td>历年余额、历年支付、基金支付、本年余额、本年支付、现金支付</td>
</tr>
</tbody>
</table>
<h4>code返回码说明</h4>
<table>
<thead>
<tr>
<th>code</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td>成功</td>
</tr>
<tr>
<td>400</td>
<td>参数错误</td>
</tr>
<tr>
<td>404</td>
<td>接口地址不正确</td>
</tr>
<tr>
<td>500</td>
<td>系统维护,请稍候再试</td>
</tr>
<tr>
<td>601</td>
<td>接口未开通</td>
</tr>
<tr>
<td>602</td>
<td>账号停用</td>
</tr>
<tr>
<td>603</td>
<td>余额不足请充值</td>
</tr>
<tr>
<td>604</td>
<td>接口停用</td>
</tr>
<tr>
<td>999</td>
<td>其他,以实际返回为准</td>
</tr>
</tbody>
</table>