本地 OCR 服务
引擎:RapidOCR(PP-OCR),离线运行、免费、无次数限制。服务地址:http://127.0.0.1:8800
接口
POST /ocr
· multipart 表单,字段名 file(最常见)
· 或请求体直接放图片二进制
· 或 JSON:{"image_base64":"..."} / {"url":"https://..."}
支持 PNG/JPG/WebP 图片,也支持 PDF(自动逐页识别,多月合订本会分页返回)
可选参数(query 或表单):
upscale=1.5 手动放大倍数(默认自动:小图自动放大到 1600 长边)
min_score=0.6 过滤置信度低的行(0~1)
pages=1-5,8 只识别指定页(PDF 用)
dpi=300 PDF 渲染精度(默认 300,扫描件一般直接取原图)
format=text 只返回纯文本
GET /health 健康检查
返回
图片:{"ok":true,"type":"image","text":"整段文字","lines":[{"text":"...","score":0.99,"box":[[x,y],...]}],"count":12,"elapsed_ms":830}
PDF :{"ok":true,"type":"pdf","pages_count":26,"processed_pages":26,
"pages":[{"page":1,"text":"第1页文字","lines":[...],"hints":{"months":["2025-03"],"amounts":["11879.06"]}}],
"text":"【第1页】...","count":2730,"elapsed_ms":38000}
hints 是从文字里猜出的电费单字段(月份/户号/金额/电量),只做初筛,具体以原始文字为准。
调用示例
# curl
curl -X POST "http://127.0.0.1:8800/ocr" -F "file=@test.jpg"
# Python
import requests
r = requests.post("http://127.0.0.1:8800/ocr", files={"file": open("test.jpg","rb")})
print(r.json()["text"])
# Node.js (fetch)
const fd = new FormData();
fd.append("file", fs.createReadStream("test.jpg"));
const res = await fetch("http://127.0.0.1:8800/ocr", { method: "POST", body: fd });
const data = await res.json();
console.log(data.text);
精度提示
· 截图、扫描件、拍照都可以识别,中英文混排支持
· 字太小或分辨率太低时,加大 upscale(如 2.0)通常能明显提升
· 识别结果带每行置信度,业务上可以按 min_score 过滤兜底