Project · AutoCatMy · 马来西亚国家图书馆

AI 驱动的
图书编目系统

为马来西亚国家图书馆(PNM)构建的生产级多智能体编目系统。将原始书籍文件经 OCR → 元数据提取 → LCSH 主题标引 → DDC 分类的完整自动化流水线,将单本编目时间从 15–30 分钟压缩至 10.55 秒

GraphRAG LangGraph Neo4j PaddleOCR FastAPI Next.js 14 Docker

解决的真实痛点

PNM 馆员需手工完成新书编目:扫描/OCR → 填写 10+ 字段元数据 → 依 LCSH 规范分配主题词 → 依 DDC 体系分类,过程耗时且依赖多年经验积累。

多语种材料(马来语、英语、中文、泰米尔语)、伊斯兰内容专项规则、马来西亚地方性规则进一步增加了复杂度,极难标准化。

6 节点 LangGraph 状态机

01
Extractor
OCR 文本修正 + 元数据提取(标题、作者、ISBN、出版商、摘要、关键词、目录等 10+ 字段)
提取层
02
Indexer
依 PNM/LCSH 规则分配 4–7 个主题词,含马来西亚专项规则(伊斯兰、地理、国家象征)
标引层
03
LCSH Critic
四维质量审查(相关性、读者年龄分级、必选主题词、冗余检测),不通过则反馈重试,最多 3 次
质控 ×3
04
Classifier
查询 DDC 知识图谱,返回 Top 5 候选分类号,依形式/用途层级(童书/伊斯兰/游记优先)
分类层
05
DDC Critic
交叉验证 DDC ↔ LCSH 一致性,不通过则反馈重试,最多 3 次
质控 ×3
06
Storage
审核通过后写入 Neo4j;超过最大重试次数自动标记为 FLAGGED_HUMAN_REVIEW,馆员可直接接管
存储层

带来的成绩

将全人工编目流程压缩为 AI 自动完成,馆员仅需审核确认——编目时间从 15–30 分钟降至 10.55 秒
🔍
双 Critic 质量门控(LCSH + DDC 各自独立审核),避免低质分类写入数据库,两路反馈环各最多 3 次迭代
🌏
多语种 + 地方性规则完全覆盖:伊斯兰内容、马来西亚地理、国家象征强制主题词全部编码进系统
🤝
人工介入节点设计合理:AI 失败时自动标记,馆员可无缝接管并直接编辑后手动触发存储,不从头重做

工程选型

AI 编排
LangGraph v0.2
LangChain v0.3
Google Gemini
知识图谱
Neo4j v5.24
LCSH 库 ~95 MB
DDC 库 ~73 MB
OCR
PaddleOCR v3.3
PaddleX v3.3
PyMuPDF
后端
FastAPI + Uvicorn
SSE 实时流
Python 3.11
前端
Next.js 14
React 18 + TypeScript
Tailwind + Framer Motion
部署
Docker Compose
阿里云 ECS + OSS
AutoDL GPU(OCR)

关键决策

双 Critic 反馈环
LCSH Critic → Indexer、DDC Critic → Classifier,两条独立反馈回路,各最多 3 次迭代。既提升质量又有超时保底,质量问题不会在两个维度间相互污染。
形式/用途优先层级
童书分 372.423 不分主题、伊斯兰内容分 297.82,这类 PNM 特有规则直接编码进 Classifier prompt,优先于内容主题判断——这是领域知识,不是通用 LLM 能猜到的。
Knowledge Graph 工具调用而非 LLM 幻觉
Classifier 不靠 LLM 背景知识猜分类号,而是实时查询 73 MB DDC 图谱,结果可溯源。三库 Neo4j 架构(PNM/LCSH/DDC),LLM 工具调用实时查权威库。
Human-in-the-Loop 默认路径
build_graph_no_storage() 变体先展示结果给馆员,确认后才写库,符合专业编目对准确性的高要求。AI 不强制做最终决策,设计了完整的馆员审核介入路径。