OCR批量识别图片方案:从手动处理到自动化API系统(Python/Java/PHP实战)

OCR批量识别图片方案:从手动处理到自动化API系统(Python/Java/PHP实战)

在电商、财务、跨境业务中,大量图片数据需要进行文字提取,例如:

  • 商品图片批量识别
  • 发票/票据批量录入
  • 身份证/证件信息结构化
  • 医疗单据自动整理
  • 批量截图文字提取

如果仍然使用人工识别方式,不仅效率低,而且成本极高。

本文将介绍一种基于OCR API的批量识别图片完整解决方案,帮助开发者快速构建自动化系统。


一、OCR批量识别的核心思路

OCR批量处理本质是:

图片队列 + OCR API + 结果结构化 + 数据落库/导出

流程如下:

复制代码
图片文件夹
   ↓
批量上传/遍历
   ↓
OCR识别API调用
   ↓
返回结构化JSON
   ↓
Excel / 数据库 / 系统

二、适用场景

1. 电商自动化

  • 商品标题提取
  • SKU识别
  • 参数结构化

2. 财务自动化

  • 发票批量识别
  • 报销单自动录入

3. 企业系统

  • 身份证OCR批量实名
  • 营业执照批量入库

4. 跨境业务

  • 多语言图片识别
  • 自动翻译前置处理

三、推荐OCR API(高精度方案)

推荐使用:

👉 石榴智能OCR API(支持多场景识别)

  • 支持免费在线体验,注册API账号送免费测试积分
  • API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)

支持能力:

  • 身份证OCR
  • 发票OCR
  • 医疗票据OCR
  • 通用文字OCR
  • 营业执照OCR
  • 多语言识别

特点:

  • 返回结构化JSON
  • 支持批量调用
  • 支持多语言SDK
  • 支持在线测试工具

四、Python批量识别示例

免费在线体验:https://market.shiliuai.com/tools/ocr/general-text

API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/advanced-general-ocr

python 复制代码
# ==============================================================================
# 免费在线体验:https://market.shiliuai.com/tools/ocr/general-text
# API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/advanced-general-ocr
# 支持免费在线体验
# API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
# ==============================================================================

# -*- coding: utf-8 -*-
import requests
import base64
import json

# 请求接口
URL = "https://ocr-api.shiliuai.com/api/advanced_general_ocr/v1"

# 图片/pdf文件转base64
def get_base64(file_path):
    with open(file_path, "rb") as f:
        data = f.read()
    return base64.b64encode(data).decode("utf8")

def demo(appcode, file_path):
    # 请求头
    headers = {
        "Authorization": "APPCODE %s" % appcode,
        "Content-Type": "application/json"
    }

    # 请求体
    b64 = get_base64(file_path)
    data = {"file_base64": b64}

    # 请求
    response = requests.post(url=URL, headers=headers, json=data)
    content = json.loads(response.content)
    print(content)

if __name__ == "__main__":
    appcode = "你的APPCODE"
    file_path = "本地文件路径"
    demo(appcode, file_path)

五、Java调用示例

java 复制代码
// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/ocr/general-text
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/advanced-general-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
// ==============================================================================

//main.java
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Base64;

public class Main {
    public static String get_base64(String path) {
        String b64 = "";
        try {
            // 使用Commons IO简化文件读取
            byte[] content = FileUtils.readFileToByteArray(new File(path));
            // 使用JDK自带的Base64
            b64 = Base64.getEncoder().encodeToString(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return b64;
    }

    public static void main(String[] args) {
        String url = "https://ocr-api.shiliuai.com/api/advanced_general_ocr/v1";// 请求接口
        String appcode = "你的APPCODE";
        String imgFile = "本地文件路径";

        Map headers = new HashMap<>();
        headers.put("Authorization", "APPCODE " + appcode);
        headers.put("Content-Type", "application/json");

        // 请求体
        JSONObject requestObj = new JSONObject();
        requestObj.put("file_base64", get_base64(imgFile));
        String bodys = requestObj.toString();

        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            // 创建POST请求
            HttpPost httpPost = new HttpPost(url);

            // 设置请求头
            for (Map.Entry entry : headers.entrySet()) {
                httpPost.addHeader(entry.getKey(), entry.getValue());
            }

            // 设置请求体
            StringEntity entity = new StringEntity(bodys, "UTF-8");
            httpPost.setEntity(entity);

            // 执行请求
            HttpResponse response = httpClient.execute(httpPost);
            int stat = response.getStatusLine().getStatusCode();
            if (stat != 200) {
                System.out.println("Http code: " + stat);
                return;
            }
            String res = EntityUtils.toString(response.getEntity());
            JSONObject res_obj = JSON.parseObject(res);

            System.out.println(res_obj.toJSONString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

六、PHP调用示例

php 复制代码
// ==============================================================================
// 免费在线体验:https://market.shiliuai.com/tools/ocr/general-text
// API文档完整开发文档和代码示例:https://market.shiliuai.com/doc/advanced-general-ocr
// 支持免费在线体验
// API文档清晰,提供多种接入语言示例(如python、js、C#、java、php等),以及自动化脚本语言(如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等)
// ==============================================================================


// 图片/pdf转base64
function get_base64($path){
    if($fp = fopen($path, "rb", 0)) {
        $binary = fread($fp, filesize($path));// 文件读取
        fclose($fp);
        $b64 = base64_encode($binary);// 转base64
    }else{
        $b64="";
        printf("%s 文件不存在", $path);
    }
    return $b64;
}

$url = "https://ocr-api.shiliuai.com/api/advanced_general_ocr/v1";
$appcode = "你的appcode";
$img_path = "图片路径";
$method = "POST";

//请求头
$headers = array();
array_push($headers, "Authorization:APPCODE " . $appcode);
array_push($headers, "Content-Type:application/json");

//请求体
$b64 = get_base64($img_path);
$data = array(
    "file_base64" => $b64
);
$post_data = json_encode($data);

// 请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);

$result = curl_exec($curl);
var_dump($result);

七、批量识别优化方案(关键)

1. 并发请求(提升10倍效率)

  • Python multiprocessing
  • Java线程池
  • Node.js async

2. 图片压缩

  • 降低带宽成本
  • 提升API速度

3. 队列处理

  • RabbitMQ / Redis Queue
  • 防止API限流

4. 失败重试机制

  • OCR识别失败自动重试3次

八、常见问题

Q1:OCR识别慢怎么办?

  • 使用批量并发
  • 图片压缩
  • 使用更高性能API节点

Q2:识别不准?

  • 提高图片清晰度
  • 使用去水印/增强API预处理
  • 选择结构化OCR接口

九、相关文章

🔗身份证OCR相关

🔗电商OCR相关

🔗图片处理


十、总结

OCR批量识别的核心不是"识别本身",而是:

把图片变成结构化数据流的自动化系统能力

通过API + 批处理 + 队列架构,可以实现:

  • 10倍效率提升
  • 成本降低80%
  • 可扩展自动化系统
相关推荐
hhzz2 小时前
基于监控视频的水位尺自动识别技术方案与实现
python·opencv·yolo·图像识别·cv
yongche_shi2 小时前
ragas官方文档中文版(五十)
开发语言·python·ai·ragas·如何评估和改进 rag 应用
AI行业学习4 小时前
Notepad++ 官方下载 + 完整安装 + 全套优化配置(2026最新)
开发语言·人工智能·python·前端框架·html·notepad++
大圣编程4 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
云烟成雨TD5 小时前
LangFlow 1.x 系列【5】可视化编辑页面功能说明
人工智能·python·agent
geovindu6 小时前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式
tryCbest7 小时前
Python 文件操作
服务器·python
涛声依旧-底层原理研究所7 小时前
Agent 长任务可靠性设计:实现暂停、恢复、续跑与崩溃重启的完整方案
人工智能·python·系统架构
AC赳赳老秦7 小时前
防火墙规则批量配置实战:OpenClaw 自动生成模板、批量下发与合规性校验全解析
java·开发语言·人工智能·python·github·php·openclaw