立项背景与目标:《侯马盟书》是春秋晚期晋国独有的朱书玉石文字遗存,入选 1949 年以来中国考古十大发现之一,是研究先秦政治、法制与文字演变的一手实物资料。但盟书历经两千余年风化侵蚀,字迹模糊、笔画残缺、异体字繁多,传统人工目验手摹的释读方式效率低、周期长。本项目目标是以人工智能与计算机视觉技术构建覆盖"图像处理—文字检测—字形识别—释读输出—知识关联"的全流程古文字识别与数字化保护平台,服务文物保护与古文字研究。
软件功能与核心模块:平台包含 9 大 API 模块与 8 个工作台面板。①用户体系:注册/登录、JWT 鉴权、管理员角色、登录限流、审计日志;②图像管理:盟书图像上传与元数据管理;③识别流水线:真实调用 PaddleOCR 完成文字检测与字形识别,逐字返回位置框、置信度,并自动匹配释读词典;④释读词典:内置 27 条基础词条(侯、馬、盟、書、晉、誓等),支持检索与管理员维护;⑤数据集标注工具:在图像上拖拽框选文字,填写字形与异体字,支持核验与导出;⑥知识图谱:字形—类别—概念共 19 个节点、13 条关系的可视化;⑦管理后台:用户角色管理、图像/词典管理、审计日志查看;⑧统计看板与 CSV 结果导出、失败任务重试。
业务流程与功能路径:核心识别流程为"上传图像 → 创建异步识别任务 → 后台模型服务执行文字检测与识别 → 逐字输出置信度与释读释义 → 前端可视化(位置框 + 结果列表)→ CSV 导出"。标注流程为"选择图像 → 框选文字区域 → 填写字形与异体字 → 保存/核验 → 一键导出 YOLO/COCO 格式训练数据集"。完整流程已通过桌面与移动端自动化验证。
整体架构与设计思路:采用前后端分离架构。后端基于 Python + FastAPI,SQLAlchemy 2.0 管理 8 张数据表(用户/图像/任务/识别结果/词典/标注/知识图谱节点与关系),默认 SQLite、生产可切换 PostgreSQL,并使用 Alembic 做版本化数据库迁移。OCR 推理运行在独立常驻子进程模型服务中,通过 stdin/stdout 的 JSON 行协议与 Web 进程通信,模型状态与业务进程完全隔离。前端为原生 HTML/CSS/JS 零构建方案,复用同一套"古籍印章"设计系统。工程配套:Docker Compose 部署、GitHub Actions CI(ruff 代码检查、mypy 类型检查、pytest 测试、全新库迁移验证)、统一错误格式、请求 ID 与 JSON 结构化日志、安全响应头与审计留痕。
我的负责模块与结果:我独立完成项目从需求到交付的全部开发。量化结果包括:8 张数据表、30+ REST API 接口、9 个自动化测试用例(覆盖率 80%)、2 个数据库迁移版本、27 条释读词典、19 节点知识图谱;真实识别流水线在示例盟书图上识别出"侯馬盟書晉誓"6 字、平均置信度 0.999 并逐字匹配释义;前端含 3 个页面、8 个工作台面板,桌面与移动端均通过渲染与交互验证,无控制台报错。
难点与解决方案:① PaddleOCR 在服务进程内推理时结果不稳定(同一图片偶发乱码),排查后定位为进程内多线程推理与编码问题,改为独立常驻子进程模型服务并强制 UTF-8、固定单线程后,连续多次识别结果完全一致;② Windows 中文经管道传输被 GBK 编码破坏,通过强制 UTF-8 文本流解决;③ Alembic 迁移的日志配置会禁用既有日志器,调整初始化顺序解决;④ 标注层 SVG 的 hidden 属性不被浏览器反射导致拖拽失效,改为常驻渲染层并禁止图片指针事件;⑤ 含合并单元格的表格列对齐错位,改用从末尾倒数定位列的方案修复。