nougat
Nougat 是一款专为学术文档设计的智能 PDF 解析工具,能将论文、报告等复杂排版的 PDF 文件精准转换为结构化的 Markdown 格式,尤其擅长识别数学公式(LaTeX)和表格。它解决了传统 OCR 工具在处理科研文献时公式错乱、排版丢失、语义断裂的问题,让机器真正“读懂”学术内容。
适合研究人员、数据工程师、教育工作者或任何需要批量处理学术 PDF 的用户使用,尤其对需提取公式或构建论文数据库的人非常实用。开发者也可通过 API 集成到自己的系统中。
技术上,Nougat 基于深度学习模型,采用端到端架构直接从图像生成结构化文本,支持 GPU 加速,并提供轻量级(small)与标准版(base)两种模型选择。输出格式兼容 Mathpix Markdown,便于后续渲染或导入笔记软件。命令行操作简单,也支持指定页码或批量处理,灵活适应不同场景。虽然目前对部分设备的失败检测机制尚不稳定,但可通过参数调整规避问题。开源免费,由 Meta 研究团队维护,持续更新中。
使用场景
一位高校研究生正在整理导师提供的上百篇计算机视觉领域的PDF论文,准备构建一个可检索、可复制公式的本地知识库用于文献综述写作。
没有 nougat 时
- 复制论文中的数学公式时只能手动重打LaTeX,稍复杂的矩阵或积分符号极易出错,一篇论文就要花几小时校对
- 表格内容无法直接复制为结构化数据,必须手动在Excel里重建,遇到跨页表格更是灾难
- 部分扫描版PDF根本无法选中文本,只能截图后用通用OCR工具识别,结果丢失所有数学符号和排版结构
- 不同论文的公式编号、章节标题格式不统一,后期整理Markdown文档时需要大量手工调整
- 想批量处理100+篇PDF时无从下手,只能一篇篇人工操作,效率极低还容易遗漏
使用 nougat 后
- 直接运行
nougat papers/ -o output/命令,自动将全部PDF转为保留LaTeX公式的.mmd文件,公式复制粘贴零误差 - 表格被精准转换为Markdown兼容的LaTeX表格语法,可直接导入数据分析工具或粘贴到论文中
- 扫描版PDF也能准确识别数学符号和复杂排版,输出结果与原版印刷质量几乎一致
- 自动生成统一风格的Markdown结构,章节标题、公式编号、参考文献格式标准化,省去后期格式调整时间
- 支持批量处理和API调用,配合脚本可实现全自动文献解析流水线,100篇论文2小时内完成结构化转换
nougat 让学术文档从“不可编辑的图片”变成“可计算的知识资产”,彻底解放研究者的时间于创造性工作而非机械劳动。
运行环境要求
- Linux
- macOS
- Windows
非必需,但推荐使用 NVIDIA GPU(Windows 需手动安装对应 PyTorch)
未说明

快速开始
这是 Nougat 的官方仓库。Nougat 是一款能够理解 LaTeX 数学公式和表格的学术 PDF 文档解析器。
项目主页:https://facebookresearch.github.io/nougat/
安装
通过 pip 安装:
pip install nougat-ocr
通过仓库安装:
pip install git+https://github.com/facebookresearch/nougat
注意(Windows 用户):如需使用 GPU,请先安装正确的 PyTorch 版本。请参考 此处说明
若需通过 API 调用模型或生成数据集,还需安装额外依赖项。 可通过以下命令安装:
pip install "nougat-ocr[api]" 或 pip install "nougat-ocr[dataset]"
对 PDF 进行预测
命令行界面 (CLI)
对单个 PDF 文件进行预测:
$ nougat path/to/file.pdf -o output_directory
也可传入目录路径,或包含每行一个 PDF 路径的文件:
$ nougat path/to/directory -o output_directory
用法: nougat [-h] [--batchsize BATCHSIZE] [--checkpoint CHECKPOINT] [--model MODEL] [--out OUT]
[--recompute] [--markdown] [--no-skipping] pdf [pdf ...]
位置参数:
pdf 待处理的 PDF 文件。
选项:
-h, --help 显示帮助信息并退出
--batchsize BATCHSIZE, -b BATCHSIZE
使用的批处理大小。
--checkpoint CHECKPOINT, -c CHECKPOINT
检查点目录路径。
--model MODEL_TAG, -m MODEL_TAG
使用的模型标签。
--out OUT, -o OUT 输出目录。
--recompute 重新计算已处理过的 PDF,丢弃之前的预测结果。
--full-precision 使用 float32 而非 bfloat16。在某些配置下可加速 CPU 转换。
--no-markdown 不添加为兼容 markdown 的后处理步骤。
--markdown 添加为兼容 markdown 的后处理步骤(默认)。
--no-skipping 不应用失败检测启发式方法。
--pages PAGES, -p PAGES
指定页码范围,如 '1-4,7' 表示第 1 至 4 页及第 7 页。仅适用于单个 PDF。
默认模型标签为 0.1.0-small。如需使用基础模型,请使用 0.1.0-base:
$ nougat path/to/file.pdf -o output_directory -m 0.1.0-base
输出目录中每个 PDF 将保存为 .mmd 文件(轻量级标记语言),基本兼容 Mathpix Markdown(我们利用了其中的 LaTeX 表格功能)。
注意:在某些设备上,失败检测启发式方法可能无法正常工作。如果遇到大量
[MISSING_PAGE]响应,请尝试使用--no-skipping参数运行。相关问题:#11,#67
API
安装额外依赖后,可通过 app.py 启动 API。执行:
$ nougat_api
向 http://127.0.0.1:8503/predict/ 发送 POST 请求即可获取 PDF 文件的预测结果。请求支持 start 和 stop 参数,用于限定计算的页码范围(含边界)。
响应内容为文档的 markdown 文本字符串。
curl -X 'POST' \
'http://127.0.0.1:8503/predict/' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F 'file=@<PDFFILE.pdf>;type=application/pdf'
如需将转换限制在第 1 至 5 页,请在请求 URL 中加入 start/stop 参数:http://127.0.0.1:8503/predict/?start=1&stop=5
数据集
生成数据集
生成数据集需要:
- 包含 PDF 文件的目录
- 包含
.html文件的目录(由 LaTeXML 处理.tex文件生成),且目录结构与 PDF 目录一致 - pdffigures2 的二进制文件,并设置环境变量
export PDFFIGURES_PATH="/path/to/binary.jar"
接着运行:
python -m nougat.dataset.split_htmls_to_pages --html path/html/root --pdfs path/pdf/root --out path/paired/output --figure path/pdffigures/outputs
其他参数包括:
| 参数 | 描述 |
|---|---|
--recompute |
重新计算所有分割 |
--markdown MARKDOWN |
Markdown 输出目录 |
--workers WORKERS |
使用的进程数 |
--dpi DPI |
页面保存时的分辨率 |
--timeout TIMEOUT |
每篇论文的最大处理时间(秒) |
--tesseract |
对每页进行 Tesseract OCR 预测 |
最后,创建一个包含所有图像路径、markdown 文本和元信息的 jsonl 文件:
python -m nougat.dataset.create_index --dir path/paired/output --out index.jsonl
对于每个 jsonl 文件,还需生成 seek map 以加快数据加载速度:
python -m nougat.dataset.gen_seek file.jsonl
最终目录结构示例如下:
root/
├── images
├── train.jsonl
├── train.seek.map
├── test.jsonl
├── test.seek.map
├── validation.jsonl
└── validation.seek.map
注意:path/paired/output(此处为 images)中的 .mmd 和 .json 文件不再需要。
这在上传至 S3 存储桶时非常有用,可减少一半文件数量。
训练
要训练或微调 Nougat 模型,请运行:
python train.py --config config/train_nougat.yaml
评估
运行:
python test.py --checkpoint path/to/checkpoint --dataset path/to/test.jsonl --save_path path/to/results.json
要获取不同文本模态的结果,请运行:
python -m nougat.metrics path/to/results.json
常见问题(FAQ)
为什么我只得到
[MISSING_PAGE]?Nougat 是在 arXiv 和 PMC 上的科学论文数据集上训练的。你正在处理的文档是否与此类似? 文档使用的是什么语言?Nougat 对英文论文效果最佳,其他基于拉丁字母的语言可能也能工作。中文、俄文、日文等将无法正常工作。 如果满足上述条件,仍出现此问题,可能是由于在 CPU 或较旧 GPU 上运行时失败检测出现了误报(#11)。目前可尝试传入
--no-skipping参数。我可以从哪里下载模型检查点(model checkpoint)?
模型已上传至 GitHub 的发布(release)页面。你也可以在首次运行程序时自动下载。通过传入
--model 0.1.0-{base,small}来选择你偏好的模型版本。
引用(Citation)
@misc{blecher2023nougat,
title={Nougat: Neural Optical Understanding for Academic Documents},
author={Lukas Blecher and Guillem Cucurull and Thomas Scialom and Robert Stojnic},
year={2023},
eprint={2308.13418},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
致谢(Acknowledgments)
本代码库基于 Donut 项目构建。
许可证(License)
Nougat 代码库采用 MIT 许可证。
Nougat 模型权重采用 CC-BY-NC 许可证。
版本历史
0.1.0-small2023/08/220.1.0-base2023/08/22常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
tesseract
Tesseract 是一款历史悠久且备受推崇的开源光学字符识别(OCR)引擎,最初由惠普实验室开发,后由 Google 维护,目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据,有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题,是数字化归档和信息自动化的重要基础工具。 在技术层面,Tesseract 展现了强大的适应能力。从版本 4 开始,它引入了基于长短期记忆网络(LSTM)的神经网络 OCR 引擎,显著提升了行识别的准确率;同时,为了兼顾旧有需求,它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码,开箱即用即可识别超过 100 种语言,并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面,它灵活支持纯文本、hOCR、PDF、TSV 等多种格式,方便后续数据处理。 Tesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库(libtesseract),不包含图形用户界面(GUI),因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中