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万图片
- 自动录入系统
- 电商/财务全自动化流程