跳到正文
Joeplover
后端开发·2026-01-15·约 2 分钟阅读

阿里云 OCR 文本识别:Java SDK 调用示例

使用阿里云 OCR API 进行文字识别的 Java 示例,涵盖 SDK 初始化、全文字识别接口和结果处理。

文字识别

阿里云 OCR 文本识别:Java SDK 集成

场景

项目中需要识别身份证照片中的信息,自动填充表单。阿里云 OCR 提供了现成的 API,支持通用文字、身份证、驾驶证、发票等场景的识别。

SDK 调用流程

<!-- Maven 依赖 -->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>ocr_api20210707</artifactId>
    <version>2.0.11</version>
</dependency>

调用步骤:

@Configuration
public class OcrConfig {
    
    @Bean
    public Client ocrClient() {
        return new Client(new Config()
            .setAccessKeyId(accessKeyId)
            .setAccessKeySecret(accessKeySecret)
            .setEndpoint("ocr-api.cn-hangzhou.aliyuncs.com"));
    }
}

@Service
public class OcrService {
    
    @Autowired
    private Client ocrClient;
    
    public IdCardInfo recognizeIdCard(String imageUrl) {
        RecognizeIdCardRequest request = new RecognizeIdCardRequest()
            .setUrl(imageUrl)
            .setOutputFigure(true);  // 输出人脸图片
        
        RecognizeIdCardResponse response = ocrClient.recognizeIdCard(request);
        return response.getBody().getData();
    }
}

识别结果示例

{
  "name": "张三",
  "number": "110101199001011234",
  "address": "北京市朝阳区xxx",
  "birthDate": "19900101",
  "gender": "男",
  "nationality": "汉",
  "validPeriod": "2020.01.01-2040.01.01"
}

场景化识别

阿里云 OCR 的核心优势在于场景化识别——不只是通用文字识别,而是对特定场景做了结构化输出:

场景接口结构化字段
身份证RecognizeIdCard姓名、号码、地址、有效期
营业执照RecognizeBusinessLicense公司名、法人、注册资本
发票RecognizeInvoice发票号、金额、开票日期
通用文字RecognizeGeneral文本内容 + 位置坐标

通用文字识别把所有文字拼在一起返回,而场景化接口返回结构化字段,直接映射到业务对象,省去了解析文本的麻烦。

成本考虑

阿里云 OCR 按调用量计费。日常测试用每个月免费额度(500 次/月)就够了。生产环境可以考虑:

  • 批量识别用离线 API(异步,价格更低)
  • 高频识别的场景缓存结果(相同图片不重复调用)
  • 身份证 OCR 相比通用 OCR 价格略高但效果好得多

多平台对比

阿里云、腾讯云、百度云的 OCR 技术和调用模式大同小异,差别主要在:

  • 各家的场景覆盖不同:例如某家对越南身份证的识别比另一家好
  • 免费额度:阿里云 500 次/月 vs 百度云特定场景免费
  • SDK 质量:阿里云 Java SDK 文档比较完善,错误信息友好

换平台时核心逻辑不变:配置 Client → 构造请求 → 调用 API → 解析结果。差异只在初始化参数和 SDK 包名。