首页项目技能关于AI 助手私人助手登录联系我
← 返回作品集

文档 OCR 识别服务

2025 - 至今·自主研发PythonFlaskOCRPDF

问题

合同、报表、扫描件这类资料大量以图片形式存在,既无法全文检索,也不能直接喂给大模型——业务方拿到一份几十页的扫描 PDF,只能靠人工逐页校对转成文字,效率极低且容易出错。更麻烦的是这些文件格式混杂:同一批资料里既有单张图片(jpg/png),也有整份图片版 PDF,还有本来就有文本层的 PDF,如果为每种格式各写一套处理逻辑,维护成本会迅速失控;而且服务要暴露给局域网内多个同事调用,上传接口还必须挡住超大文件与伪造扩展名。

方案

服务化

用 Flask 把识别能力包成 HTTP 端点 /api/ocr,局域网内同事直接上传取结果,无需安装任何客户端;配套 Werkzeug 静态模板提供简易上传页。

双流水线自动分流

核心设计。ocr_all.get_file_type() 先判定文件类型,再分派到不同流水线——图片走recognize_image()(OpenCV 预处理 + 分块送 OCR),PDF 走 recognize_pdf();PDF 内部还先用 PyMuPDF 抽取文本层,抽到就直接用,抽不到才转图片识别,避免对已有文本层的文件做无谓的图像识别,这是准确率和速度的关键。

多引擎兜底

同时接入 pytesseract 与 transformers(torch)两套 OCR,实现上按场景取舍,识别质量不稳定时能换引擎而不改上层接口。

上传安全

secure_filename 重写文件名,杜绝路径穿越;扩展名白名单限定 txt/pdf/png/jpg/jpeg/gif/bmp/tiff;MAX_CONTENT_LENGTH 设为 16MB 拦截超大文件;落盘统一走 tempfile 临时目录,处理完即清。

可复用输出

输出统一按 ===== 第 N 页 ===== 分页标记写文本,既能直接被下游检索系统消费,也能被大模型作为上下文。

成果

扫描件与图片版 PDF 可批量转成带分页标记的可检索文本,直接对接检索系统或作为大模型上下文;识别能力以接口形式提供,局域网内其他同事与系统都能直接复用,不再依赖人工逐页校对。

有类似的需求?

我可以帮你评估工作量和技术方案,聊一聊不花钱。

联系我