marker 如何把 PDF 行内数学公式转成可编辑 LaTeX:3 分钟完整跑通
【免费下载链接】markerConvert PDF to markdown + JSON quickly with high accuracy项目地址: https://gitcode.com/GitHub_Trending/ma/marker
marker 是一个把 PDF 和图像转成 Markdown、JSON、HTML 的转换工具,支持多语言与复杂布局,可选集成 LLM。行内数学公式会被转成 KaTeX 兼容的 LaTeX。PDF 公式转乱码、转出来不能编辑,是这类工具最常见的两个坑,本文按场景、原理、参数、上手四步讲清楚 marker 的解法。
一、公式在哪翻车,marker 在哪接住
- 学术论文 PDF:正文里嵌着
f(x)这类行内数学公式,直接复制出来是乱码。marker 转换后输出$f(x)$形式的 LaTeX,粘进 Markdown 编辑器直接渲染。 - 带推导链的技术报告:一行公式常被排版拆成多个文本行。marker 先做行合并,把碎片拼回完整公式再识别,避免输出半截公式。
- 多栏、多语言混排的文档:符号跨栏错位是常见故障。marker 基于布局分析定位文本块,数学块单独走识别通道,不和普通文本混在一起。
二、三幕看懂公式处理流水线
1. 认出:定位 + 行合并
LineMergeProcessor计算相邻行的交集面积与垂直重叠比例,两项同时过阈值才判定为同一行的碎片并合并(实现见marker/processors/line_merge.py)。合并结果会被标记为 math 格式——能被这样拆开再拼回来的,多半就是行内数学公式。这一步默认只在启用 LLM 时执行。
2. 修准:LLM 校验(可选)
开启 LLM 后,每个疑似公式块的文本连同对应图片一起发给大模型,由text_math_rewriting_prompt提示词驱动检查:不是 LaTeX 的转成 LaTeX,格式错乱的修正,最终用<math>标签包裹公式(提示词与逻辑在marker/processors/llm/llm_mathblock.py)。没有 LLM 也能跑,只是省掉这道校验。
3. 落格式:$ 与
内部表示统一后,渲染层再选分隔符。Markdown 用$包行内公式、$$包独立公式;HTML 则保留<math>标签(见marker/renderers/markdown.py)。同一份输出,两种格式,公式本体不变。
三、参数速查:公式相关配置有哪些
| 配置项 | 作用 |
|---|---|
ocr_inline_math | 是否对"疑似含行内数学公式"的文本块做 VLM OCR(数学识别开关,None表示 balanced 模式自动开启) |
use_llm | 是否调用 LLM 校验并修正公式,同时触发行合并 |
redo_inline_math | LLM 模式下是否重做行内公式,而不是沿用 OCR 结果 |
默认值面向"公式多的文档"调过,一般不用动;只想要文本层结果时,关掉数学识别相关开关可以明显提速。
四、3 分钟跑通:装、跑、验
装:
git clone https://gitcode.com/GitHub_Trending/ma/marker cd marker pip install -e .跑(把 PDF 放进一个文件夹,例如pdfs/):
python convert.py pdfs验:在pdfs/下打开生成的.md文件,行内公式应被$包裹,例如 PDF 里的f(x) = x^2 + 3x + 2输出为$f(x) = x^2 + 3x + 2$,独立成行的公式则是$$...$$。
五、FAQ
Q:为什么我的公式还是识别错了?先确认use_llm开了没有。LLM 修正是最后兜底的一关,它拿原图对提取结果逐块比对;扫描质量差、字号过小时的错字,它也会尽量按图纠正。
Q:能否只提取公式?marker 是整页转换,不做局部公式抽取;不想要图像时可加--disable_image_extraction,想要速度可切换 fast 模式跳过 VLM。
Q:转换后在哪里渲染?行内公式以$包裹,放进支持 LaTeX 的 Markdown 编辑器(如 VS Code 插件、Typora)即可渲染;HTML 输出则带<math>标签,配合 KaTeX 脚本渲染。
科研、学生、技术文档作者处理带公式的 PDF,都可以用 marker 把行内数学公式变成可编辑的 KaTeX 兼容 LaTeX:识别靠行合并加 VLM OCR,修正靠 LLM,整条链路都有参数可调。把仓库 clone 下来,按上面三步走完,你的第一篇带公式的 Markdown 就能跑出来。
【免费下载链接】markerConvert PDF to markdown + JSON quickly with high accuracy项目地址: https://gitcode.com/GitHub_Trending/ma/marker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考