OCR服务
服务简码
HOCR
默认端口
8290
默认路由
/hocr/**
组件编码
hzero-ocr
1 简介
1.1 概述
图像文字识别服务
1.2 组件坐标
- OP版本
<dependency>
<groupId>org.hzero</groupId>
<artifactId>hzero-ocr</artifactId>
<version>${hzero.service.version}</version>
</dependency>
1.3 主要功能
- 营业执照识别
- 增值税发票识别
- 火车票识别
- 身份证识别
- 出租车票识别
- 通用文本识别
- 一图多票识别(火车票、出租车票、定额发票)
1.4 服务配置
OCR需要借助接口平台的能力,与外部服务对接
1.在接口平台注册具有OCR识别能力的外部接口服务,并添加相应的识别接口,以百度识别接口为例,配置如下:


接口编码需要固定,否则功能无法使用
- 出租车票识别(TAXI_INVOICE)
- 定额发票识别(QUOTA_INVOICE)
- 通用文字识别(GENERAL_BASIC)
- 增值税发票识别(VAT_INVOICE)
- 身份证识别(ID_CARD)
- 营业执照识别(BUSINESS_LICENSE)
- 火车票识别(TRAIN_TICKET)
- 定额发票识别(QUOTA_INVOICE)
2.在接口平台注册OCR识别组合接口服务,并添加相应的识别接口(OCR页面调用识别的接口),以百度识别接口为例配置如下:

3.然后接口平台-接口配置-应用类型定义添加实例接口(组合接口),以出租车票为例配置如下:

4.最后在实例接口详情页中维护第一步中添加相对应OCR识别的外部接口,以出租车票为例配置如下:

接口平台功能使用可参考接口平台文档
1.5 安装
- 首先初始化groovy表结构脚本
- 其次初始化相关基础数据: 值级、值级视图、菜单、权限集、管理员角色权限等基础数据, 参考
hzero-resource - 运行
mvn spring-boot:run
2 开发指导
feign调用: POST /v1/{organizationId}/ocr
传入参数
| 参数名 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| organizationId | Long | 是 | 租户ID |
| recognizeRequestDTO | RecognizeRequestDTO | 是 | 识别请求DTO |
RecognizeRequestDTO
| 参数 | 是否必须 | 值 |
|---|---|---|
| code | 是 | 身份证:ID_CARD营业执照:BUSINESS_LICENSE增值税发票:VAT_INVOICE火车票:TRAIN_TICKET出租车票:TAXI_INVOICE通用文本:GENERAL_BASIC一图多票:MULTI_IMAGE |
| imageUrl | 否 | 图片url (识别类型为ID_CARD类型以外传入) |
| imageUrlFront | 否 | 身份证正面图片url (识别类型为ID_CARD时传入) |
| imageUrlBack | 否 | 身份证背面图片url (识别类型为ID_CARD时传入) |
返回参数
| 类型 | 描述 |
|---|---|
| List<RecognizeResultDTO> | 识别返回结果DTO |
RecognizeResultDTO
| 参数名 | 类型 | 描述 |
|---|---|---|
| imageUrl | String | 图片地址 |
| ocrType | String | 识别类型 |
| resultInfo | BusinessLicenseDTOQuotaInvoiceDTOTaxiReceiptDTOIdCardDTOTrainTicketDTOVatInvoiceDTO | 识别结果 |
BusinessLicenseDTO
| 参数名 | 类型 | 描述 |
|---|---|---|
| name | String | 名称 |
| type | String | 类型 |
| address | String | 住所 |
| legalPerson | String | 法定代表人 |
| registeredCapital | String | 注册资本 |
| foundDate | Date | 成立日期 |
| validPeriod | String | 营业期限 |
| registrationNumber | String | 证件编号 |
| uscc | String | 社会信用代码 |
| businessScope | String | 经营范围 |
IdCardDTO
| 参数名 | 类型 | 描述 |
|---|---|---|
| name | String | 姓名 |
| sex | String | 性别 |
| birth | String | 出生日期 |
| ethnicity | String | 民族 |
| address | String | 地址 |
| number | String | 身份证号 |
| issue | String | 签发机关 |
| validFrom | String | 签发日期 |
| validTo | String | 失效日期 |
QuotaInvoiceDTO
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | String | 发票代码 |
| number | String | 发票号码 |
| amount | BigDecimal | 发票金额 |
| location | String | 地址 |
TaxiReceiptDTO
| 参数名 | 类型 | 描述 |
|---|---|---|
| invoiceCode | String | 发票代码 |
| number | String | 发票号码 |
| taxiNumber | String | 车牌号 |
| date | Date | 日期 |
| time | String | 上下车时间 |
| fare | BigDecimal | 金额 |
| fuelOilSurcharge | BigDecimal | 燃油附加费 |
| callServiceSurcharge | BigDecimal | 叫车服务费 |
| totalFare | BigDecimal | 实收金额 |
TrainTicketDTO
| 参数名 | 类型 | 描述 |
|---|---|---|
| ticketNumber | String | 车票号 |
| trainNumber | String | 车次 |
| checkPort | String | 检票口 |
| startingStation | String | 始发站 |
| destinationStation | String | 终点站 |
| startingTime | String | 开车时间 |
| ticketPrice | BigDecimal | 票价 |
| seatCategory | String | 席别 |
| name | String | 乘客姓名 |
| seatName | String | 座位号 |
VatInvoiceDTO
| 参数名 | 类型 | 描述 |
|---|---|---|
| type | String | 发票种类 |
| number | String | 发票号码 |
| code | String | 发票代码 |
| issueDate | Date | 开票日期 |
| checkCode | String | 校验码 |
| encryptionBlock | String | 密码区 |
| attribution | String | 发票归属地 |
| buyerName | String | 购方名称 |
| buyerId | String | 购方纳税人识别号 |
| buyerAddress | String | 购方地址及电话 |
| buyerBank | String | 购方开户行及账号 |
| sellerName | String | 销售方名称 |
| sellerId | String | 销售方纳税人识别号 |
| sellerAddress | String | 销售方地址及电话 |
| sellerBank | String | 销售方开户行及账号 |
| subtotalAmount | BigDecimal | 合计金额 |
| subtotalTax | BigDecimal | 合计税额 |
| total | BigDecimal | 价税合计(小写) |
| totalInWords | String | 价税合计(大写) |
| receiver | String | 收款人 |
| reviewer | String | 复核人 |
| issuer | String | 开票人 |
| remarks | String | 备注 |
| itemList | List<VatInvoiceLine> | 增值税发票明细行 |
VatInvoiceLine
| 参数名 | 类型 | 描述 |
|---|---|---|
| name | String | 商品名称 |
| specification | String | 规格型号 |
| unit | String | 单位 |
| quantity | BigDecimal | 数量 |
| unitPrice | BigDecimal | 单价 |
| amount | BigDecimal | 金额 |
| taxRate | BigDecimal | 税率 |
| tax | BigDecimal | 税额 |
3 展望
- OCR识别统计
- 统计外部接口调用情况
- 对接计费服务,实现OCR识别计费功能
- 一图多票中单个票据识别失败优化
- OCR客户端