用途
ocr_kb 是论文排版与整理完整工作流中的 Pipeline A(OCR 管道),专门处理 PDF 输入。其目标是将长文档 PDF 逐页精读,提取文本、LaTeX 公式和独立的科研配图,最终生成符合指定格式规范(如 IEEE、APA 等)的 DOCX 交付文件。
目录规范
所有中间文件和最终产物必须遵守规定的目录结构,禁止在项目根目录下放置任何生成文件。项目根目录下包含 resources/(存放 pages/、figures/、md/、scripts/、compiled_paper.md、config.json、checkpoint.json)、outputs/(存放核查点中间版本与最终交付版本)、ocr_kb/(存放本 SKILL.md)以及用户提供的原始 PDF。
配置与进度文件
resources/config.json 在每次新任务启动时创建,整个任务期间不修改,包含 source_file、source_type、pipeline、format_style、template_file、total_units、unit_type、created_at 等字段。Pipeline A 固定使用 source_type: "pdf"、pipeline: "A"、unit_type: "page"。
resources/checkpoint.json 是断点恢复的唯一依据,每完成一个单元的提取加 DOCX 追加后更新,包含 current_unit、unit_type、last_verified_unit、total_units、docx_path、global_figure_count、global_table_count、global_equation_count、needs_review、completed_units、status 等字段。计数器只增不减。
主要能力
逐页精读与追加写入:逐页用视觉能力精读图片,原汁原味提取文字,标题层级使用干净的 # 层级;公式全部转成标准 LaTeX 语法(行内 $ $、独立块 $$ $$);识别并精确裁剪独立的科研配图与表格图,使用全局编号,引用裁剪后的独立图片路径而非整页截图;每页写入 resources/md/page_N.md 并更新 checkpoint.json。
逐页 DOCX 生成与双页核查:每完成一页 MD 提取即追加到正在构建的 DOCX;每两页执行一次自检核查,核对排版效果与信息完整性,通过则更新 last_verified_unit,不通过则记录到 needs_review 并尝试修复。
上下文极限保护:连续处理 4 页后主动悬挂,保存中间版本并通知用户发送「继续」。中间版本命名为 _checkpoint_p<N>,最终交付版本为 final<YYYYMMDD>。
最终排版定稿:检查 needs_review 清零后,将各页 MD 合并为 compiled_paper.md,调用 generate_docx.py 生成最终 DOCX。
使用方式
全新任务:用户发送「按照某某格式排版这个 PDF」时,依次执行环境清理确认、选定源文件、创建 config.json、切图(split_pdf.py)、建立 checkpoint.json、逐页循环、汇总定稿、输出报告。
断点续作:用户发送「继续」时读取 checkpoint.json,从 current_unit 继续,全局计数器从 checkpoint 恢复。
部分重跑:用户发送「重跑第 N 页」时重新提取该页,覆盖 page_N.md,复用原配图编号,重新生成最终 DOCX。
批量重跑:用户发送「重跑第 X-Y 页」时对范围内每一页逐一执行重跑。
脚本接口契约
split_pdf.py:python resources/scripts/split_pdf.py <pdf_path> <output_dir> [--dpi 300],输出 page_1.png 至 page_N.png,stdout 最后一行输出 TOTAL_PAGES=N。
extract_figures.py:python resources/scripts/extract_figures.py <page_image> <page_num> <coords_json> <output_dir> <start_index>,输出 figure_<start_index>.png 等,stdout 最后一行输出 FIGURES_EXTRACTED=K。
generate_docx.py:python resources/scripts/generate_docx.py <compiled_md> <config_json> <output_path>,输出指定路径的 .docx。
latex_to_omml.py:python ocr_kb/scripts/latex_to_omml.py <latex_string> [--inline],输出 OMML XML 片段,支持基础运算、分式、上下标、根号、希腊字母、求和/积分、矩阵及常用数学符号。该脚本位于 ocr_kb/scripts/,为 Skill 自带工具,所有管道共用。
适用场景
适用于需要将 PDF 论文(尤其是含公式与科研配图)转换为符合指定排版格式的 DOCX 文档的任务,支持长文档的断点续作与部分重跑。
限制
具体格式预设(IEEE / APA / 中国学位论文等)的完整参数表定义在主 SKILL.md 中,本文件未展开;latex_to_omml.py 仅支持所列范围的 LaTeX 命令,转换失败时通过 stderr 输出错误信息。其他未在资料中提及的功能、收费或平台信息暂未提供。
完成报告
全部页面处理完毕并生成最终 DOCX 后,必须输出结构化完成报告,包含源文件、输入类型、处理管道、格式规范、总单元数、提取公式数、裁剪配图数、提取表格数、核查点版本数、最终文件及遗留问题。