
最近工作比较忙,对PostGIS相关更新较慢,栅格数据处理部分整套基本更新完毕,后续会陆续更新矢量数据处理部分。近期开发一个利用本地OCR大模型识别图片、PDF等文件,根据模版自动生成相关文书的小工具,主要是满足本地部署运行,简单总结分享一下。
一、 开发背景
在日常工作中,会遇到以下场景:发布中标公示、行政审批公示、人事任免公示、项目立项公示、行政处罚公示等多类型文书制作,文档制作过程中面临人工录入效率低、排版易出错、信息提取容易出错等情况,现有一些 OCR 手机端软件等也能从PDF、图片等非结构化原始文档中提取文字信息,但是大多基于互联网,有些文件则需要保密或者内部公开,存在一定的数据安全风险。
本软件基于本地的OCR大模型进行开发,所有识别运算与数据处理均在本地环境 ,无需将业务文档上传至第三方云端服务,从技术路径上保障数据安全,支持离线环境运行,可有效降低人工操作带来的文字与格式错误,保障文件的规范性、准确性,全面提升办公自动化水平。
二、 技术架构
软件采用 B/S 分层架构设计,整体分为四层,如图所示:

1. 前端交互层
由于功能简单,前端采用 HTML 与 JavaScript 原生技术栈开发,实现文件上传管理、识别结果展示、图文对照校验、在线文本编辑、文档导出等功能,用户通过标准浏览器即可访问操作,无需安装专用客户端。
2. 业务逻辑层
后端采用 Python、FastAPI Web 框架,文档模板使用 DocXTemplate 框架,负责请求路由、文件解析处理、字段抽取运算、模板渲染生成、大模型管理查询、数据交互等业务逻辑处理。
3. AI 处理层(基于Ollama本地化OCR大模型)
基于 Ollama 构建本地化大模型,统一管控 OCR 大模型的本地部署、加载运行、OCR 请求,全程数据不流出本地环境。
4. 数据存储层
采用本地轻量化 Sqlite 数据库对历史数据存储,模板配置采用文件管理,实现本地化存储与管理。
三、 本地化 OCR 大模型选择
本软件选取主流的三种 OCR 大模型,都使用 Ollama 进行管理并本地化,主要是百度的PaddleOCR-VL-1.6、智谱的视觉模型glm-ocr、阿里的通义千问视觉模型qwen2.5vl ,这三种模型参数都不算大,普通一般的台式机,作者在 32G内存/2G独显 可以正常跑且速度满足需要,具体实践中可以根据识别效率和识别准确率综合判断使用。
python
AVAILABLE_MODELS = {
"AuditAid/PaddleOCR-VL-1.6-0.9B:latest": {
"name": "PaddleOCR-VL 0.9B",
"description": "百度飞桨OCR视觉模型,中文识别精准",
"size": "0.9B",
},
"glm-ocr:latest": {
"name": "glm-ocr:latest",
"description": "智谱开源发布了专为复杂文档理解设计的多模态 OCR 模型 GLM-OC",
"size": "0.9B",
},
"qwen2.5vl:7b": {
"name": "Qwen2.5-VL 7B",
"description": "通义千问视觉模型",
"size": "7B",
}
}
四、 软件部分截图
主界面:

使用示例:
