零工系统企业认证:营业执照 OCR 识别,阿里云这个接口我调了一下午
导读:零工/招聘系统里,企业发岗位前得先过认证------营业执照得验真吧。人工审核慢,用户吐槽;全自动又怕假执照。后来接了个折中方案:先用阿里云 OCR 把执照信息抽出来自动填表,再人工看一眼关键字段。这篇记录接口接入的坑,尤其是 Advance 接口那个大坑。
为什么不用人工录入
一开始企业注册是手填:公司名、统一社会信用代码、法人、注册资本、成立日期......填一屏,错一屏。用户烦,审核的人更烦------得对着营业执照照片逐字核对。
后来决定上 OCR,让用户传张执照照片,信息自动带出来,能改但不用重填。审核那边也轻松,机器识别 + 人眼复核双保险。
接口接入:先看官方示例
阿里云 OCR 的营业执照识别,文档里给了两种调法:
recognizeBusinessLicenseWithOptions:传图片 URL,要求 URL 能被公网访问recognizeBusinessLicenseAdvance:传图片流(InputStream),走文件直传
java
// 场景一:传本地文件/流(Advance 接口)
InputStream inputStream = url.openConnection().getInputStream();
RecognizeBusinessLicenseAdvanceRequest request = new RecognizeBusinessLicenseAdvanceRequest()
.setImageURLObject(inputStream);
client.recognizeBusinessLicenseAdvance(request, runtime);
// 场景二:传公网 URL
RecognizeBusinessLicenseRequest request = new RecognizeBusinessLicenseRequest()
.setImageURL(imgUrl);
client.recognizeBusinessLicenseWithOptions(request, runtime);
坑一:图片在 OSS 私有桶,URL 接口直接挂
我们图片是传 OSS 私有桶的,签名 URL 倒也能访问,但签名有效期一过就 403 。而且 WithOptions 版本对图片大小、格式卡得挺死,传个手机拍的 5MB 照片,分分钟给你超时。
最后统一走了 Advance 接口------后端拿到图片流直接传,不走公网 URL,稳定太多。代价是要先把 OSS 对象拉成 InputStream,多一步而已。
坑二:endpoint 不是你想当然那个
官方默认的 endpoint 写的是 ocr.cn-shanghai.aliyuncs.com,但你的 OSS 可能在别的区。当时我把 OSS 华东一、OCR 华东二混着配,接口时好时坏,排查半天才发现是区域不一致。OCR 服务本身和 OSS 区域无关,但建议放同一区,网络延迟和故障面都小。
java
Config config = new Config()
.setAccessKeyId(accessKeyId)
.setAccessKeySecret(accessKeySecret);
config.endpoint = "ocr.cn-shanghai.aliyuncs.com";
坑三:识别结果别直接信,尤其注册资本
OCR 返回的字段挺全:Name(公司名)、RegisterNumber(统一社会信用代码)、LegalPerson(法人)、Capital(注册资本)、EstablishDate(成立日期)、ValidPeriod(有效期)、Business(经营范围)。
但注意,Capital 是字符串,不是数字 ------"100万元整"这种带着"万元整"三个字。存库前得自己清洗转换,不然排序、统计全废。还有 EstablishDate 是 20221108 这种紧凑格式,入库要转成标准日期。
json
{
"Data": {
"Name": "无锡道源景观工程服务有限公司",
"RegisterNumber": "91320214MAC3EH9U7L",
"LegalPerson": "芮莹",
"Capital": "100万元整",
"EstablishDate": "20221108",
"ValidPeriod": "29991231",
"Business": "一般项目:园林绿化工程施工;土石方工程施工;...",
"Type": "有限责任公司(自然人投资或控股)"
}
}
坑四:AK 权限要给对
官方示例说用 RAM 子账号,要给 AliyunVIAPIFullAccess 权限。实际生产环境建议只授 OCR 相关权限 ,别一把梭给 AliyunFullAccess。我们线上就因为这个被安全扫描揪出来过,血泪教训。


说点实在的
OCR 不是万能的。执照照片歪一点、反光、模糊,识别率就掉。我们的策略是识别结果只做预填,提交前让用户确认一遍,后台再保留人工复核入口。机器提效、人工兜底,这套组合拳下来,企业认证通过率明显上来了,审核时间从原来的几分钟缩到几十秒。
项目源码(日结零工系统):https://gitee.com/gzqkl/xllg