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

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

在实际业务中,无论是电商商品处理、财务票据录入,还是企业数据归档,OCR批量识别图片已经成为刚需能力。

传统"单张识别"的方式效率极低,无法满足规模化数据处理需求,因此越来越多企业开始搭建OCR批量识别自动化系统

本文将从方案设计 + API调用 + 多语言代码实现三个维度,完整讲清楚如何落地OCR批量处理能力。


一、OCR批量识别图片适用场景

OCR批量处理不仅仅是"识别文字",更是一个自动化数据管道,常见场景包括:

1. 电商场景

  • 批量识别商品图片标题
  • SKU信息提取
  • 商品参数自动结构化

2. 财务场景

  • 发票批量识别
  • 报销单自动录入
  • 医疗票据整理

3. 企业信息化

  • 营业执照批量识别
  • 身份证信息录入
  • 文档数字化归档

👉 延伸阅读:


二、OCR批量识别核心方案架构

一个完整的OCR批量识别系统通常包含以下流程:

复制代码
图片上传 → 队列任务 → OCR识别API → 结果解析 → 数据存储(MySQL/Excel/ES)

核心设计点:

1. 批量任务队列

避免一次性请求过多API导致失败

2. 异步处理

使用线程池 / 消息队列(Redis / RabbitMQ)

3. OCR API调用

统一接口封装,支持扩展不同OCR能力

4. 结果结构化

将识别结果转为 JSON / Excel / 数据库


三、OCR批量识别API调用(通用示例)

这里以企业级OCR接口为例(支持身份证、发票、文字识别等)。

Python 示例

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);

四、批量OCR优化关键点(非常重要)

1. 并发控制

建议控制在:

  • 5~20线程(视API限制)

2. 图片压缩

  • 控制在 1MB以内
  • 提升识别速度30%+

3. 失败重试机制

  • 超时自动重试3次

4. 结果缓存

  • 相同图片避免重复调用

五、OCR批量识别 vs 单张识别

对比项 单张识别 批量识别
速度 快(并发)
成本
自动化
适用场景 测试 生产系统

六、推荐OCR解决方案(企业级)

在实际项目中,建议使用稳定的OCR能力平台,例如:

👉 石榴智能

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

其提供能力包括:

  • OCR文字识别API
  • 身份证/发票/营业执照识别
  • 图片去水印
  • 图片高清化
  • 批量处理接口支持

适合:

  • 电商自动化系统
  • 企业数据录入系统
  • SaaS集成平台

七、总结

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

任务队列 + API调用 + 并发处理 + 数据结构化

只要架构设计合理,就可以轻松实现:

  • 日处理1000~10万图片
  • 自动录入系统
  • 电商/财务全自动化流程
相关推荐
stereohomology5 小时前
测试unlimited ocr
ocr·colab
iPad协议个微协议8 小时前
企业微信文件上传下载在自动化系统中的处理方式
java·运维·人工智能·机器人·自动化·企业微信
Profile排查笔记11 小时前
指纹浏览器环境异常排查:Fingerprint、Profile、Proxy、Session 和 Task Log 怎么看
前端·人工智能·后端·自动化
想你依然心痛11 小时前
持续集成在嵌入式开发中的实践:GitLab CI与交叉编译——自动化构建、固件生成
ci/cd·自动化·gitlab
xcLeigh11 小时前
KES运维自动化与脚本体系实战
运维·数据库·自动化·脚本·数据迁移·kes
许彰午13 小时前
75_Python自动化办公之Word与PDF
python·自动化·word
测试工程师成长之路13 小时前
软件测试智能化升级与落地实践
自动化
开开心心_Every13 小时前
带OCR识别的电子发票打印工具
运维·自动化·ocr·电脑·powerpoint·音视频·lua
风信子IT人14 小时前
【5天实战】从零构建AI-Native组织:飞书+Bot+Gitee全链路自动化实战指南—Day 5:完整场景实操验证
gitee·自动化·飞书·ai-native·bot开发
搬砖柯14 小时前
系列11-测试平台 MCP Server 实践:用 Kimi Code 自然语言查项目、跑 API 回归
人工智能·python·ai·开源·自动化