【免费下载链接】Nemotron-Parse-2.0-8bit
Nemotron-Parse-2.0-8bit 是 NVIDIA 文档解析模型 Nemotron-Parse-2.0 的 8-bit MLX 量化版,专为 Apple Silicon 打造。它的核心能力之一是表格后处理:模型以 LaTeX 格式输出识别到的表格,而仓库自带的 postprocessing.py 只需一行调用,就能把 LaTeX 表格一键转换为 HTML、Markdown、JSON、JSON Hierarchical 或 CSV 五种格式,覆盖网页渲染、文档排版和结构化数据三大场景。
模型速览:为什么选 8-bit 版本?
Nemotron-Parse-2.0-8bit 是基于 MLX 框架的 903M 参数 encoder-decoder OCR 模型(C-RADIO 视觉编码器 + mBART 风格解码器),整个模型仅占1.6 GB磁盘空间。
| 关键指标 | 数值 | 说明 |
|---|---|---|
| 量化位数 | 8-bit(组大小 64) | 视觉编码器保留 bf16 以保精度 |
| 磁盘体积 | 1.6 GB | 比 bf16 原版更适合消费级 Mac |
| 推理速度 | ~215 tok/s(M2 Pro 实测) | 约为 bf16 原版的 3.4 倍 |
| OCR 字段准确率 | 0.9474 | 与 bf16 原版持平 |
💡 8-bit 版本在 6 类文档(发票、检测报告、快递单、收据、规格表、旋转小票)上的综合字段准确率达到94.74%,与未量化的 bf16 原版完全一致——量化几乎不损失精度,却能带来近 3 倍的速度提升。
为什么要做表格后处理?
模型原生输出的表格长这样(LaTeX 格式,含合并单元格指令):
\begin{tabular}{cc} \multicolumn{2}{c}{Sales Report} \\ \hline Region & Q1 \\ \hline EMEA & 120 \\ \end{tabular}这种格式有三个痛点:
- 网页不能直接渲染——浏览器不认识
\begin{tabular}; - 程序不能直接解析——要自己写 LaTeX 解析器,还要处理
\multirow、\multicolumn合并单元格的嵌套; - Markdown 表格有局限——不支持跨行跨列,多行表头必须拍平。
好消息是:仓库把这些活全干了。核心入口就是 postprocessing.py 中的postprocess_text()函数,内部调用 latex2html.py 中一整套解析器(平衡花括号解析、嵌套\multirow/\multicolumn合并、行尾空单元格裁剪等),你只需要传参选择目标格式。
后处理快速上手:一次调用搞定
完整推理管线分四步(参考 example_with_processor.py):
from postprocessing import extract_classes_bboxes, transform_bbox_to_original, postprocess_text # ① 从模型输出中提取"类别 + 坐标 + 文本"三元组 classes, bboxes, texts = extract_classes_bboxes(generated_text) # ② 把归一化坐标还原回原图尺寸 bboxes = [transform_bbox_to_original(b, img.width, img.height) for b in bboxes] # ③ 逐块后处理:非 Table 块转纯文本,Table 块转目标格式 results = [ postprocess_text(text, cls=cls, table_format="HTML", text_format="markdown") for text, cls in zip(texts, classes) ]postprocess_text()支持两个关键参数:
| 参数 | 可选值 | 作用 |
|---|---|---|
table_format | latex/HTML/markdown/json/json_hierarchical/csv | 表格输出格式 |
text_format | markdown/plain | 正文块格式(plain 会剥离标题、加粗等标记) |
另有一个隐藏彩蛋:blank_text_in_figures=True可以把Picture类区块的文字清空,适合只要文字层、不要图内标注的场景。
六大格式逐个拆解
1️⃣ HTML:带表头结构、保留合并单元格
latex_table_to_html()(latex2html.py)是转换引擎的核心,输出带<thead>/<tbody>的语义化表格:
<table> <thead> <tr><th>Region</th><th>Q1</th><th>Q2</th></tr> </thead> <tbody> <tr><td>EMEA</td><td>120</td><td>135</td></tr> </tbody> </table>值得注意的工程细节:
- 合并单元格无损保留:
rowspan/colspan会被正确计算并用multirow_tracker跳过占位格,嵌套的\multirow{...}{\multicolumn{...}{...}}也能递归解析合并参数(见 parse_command_merge); - 表头深度自动探测:根据首行最大
rowspan判断表头行数,多行表头整体归入<thead>; - 行内格式转写:
\textbf→<b>、_..._→<i>、\$等特殊符号自动解转义。
2️⃣ Markdown:多行表头拍平为点号列名
convert_html_tables_to_markdown()(latex2html.py)先用_expand_spans把rowspan/colspan展开成规则网格,再把多行表头沿列向下拼接成点号路径。例如三层表头International → EMEA → Q1会变成单列名International.EMEA.Q1,产出标准 GFM 表格:
| International.EMEA.Q1 | International.APAC.Q1 | | --- | --- | | 120 | 88 |管道符|会自动转义为\|,空表头兜底为column_N。
3️⃣ JSON:表格变结构化记录
convert_html_table_to_json()(latex2html.py)把每行变成以列名为键的字典,多行表头同样拍平成点号列名,重复表头自动加_1、_2后缀去重。单张表输出[{...}, {...}],多张表输出[[...], [...]]——直接可以json.load后入库。
4️⃣ JSON Hierarchical:无损往返的"完整版"
普通 JSON 把表格拍平后就丢失了合并单元格信息,而convert_html_table_to_json_hierarchical()(latex2html.py)保留了完整结构:
{ "header_rows": 2, "columns": ["International.EMEA.Q1", "International.APAC.Q1"], "headers": [["International", {"text": "EMEA", "rowspan": 2}, ...], ...], "data": [["120", "88"], ...] }每个跨格单元都带着rowspan/colspan元数据且不重复填充被覆盖的格子,可以从它无损重建原始 HTML 或 LaTeX 表格,适合需要二次排版/回溯的场景。
5️⃣ CSV:直接喂给 Excel 和数据库
convert_html_table_to_csv()(latex2html.py)复用点号列名逻辑,把多行表头压成单行表头,多张表之间用空行分隔,引号、逗号等边界情况交给标准csv.writer处理,Excel、pandas、SQLite 都能直接读。
6️⃣ LaTeX:保留原生格式
table_format='latex'不做转换,保留模型原生输出,适合喂给 PDF 排版工具链。
完整管线:从图片到四种数据格式
如果你用 vLLM 部署(参考 vllm_example.py),仓库还配套了两个 logits 处理器保证表格输出的"开箱即用":
- TableInsertionLogitsProcessor(hf_logits_processor.py):强制在每个表格坐标对后插入
\begin{tabular}前缀,避免模型漏写结构头; - RepetitionStopProcessor:检测 n-gram 重复幻觉(默认窗口 500 token、阈值 10 次重复),在退化循环前强制切回坐标 token。
vLLM v1 版本在 logitsprocs/nemotron_parse_vllm_logitprocs.py,可通过NEMOTRON_PARSE_REP_MAX等环境变量调参。推理时建议沿用仓库的生成配置(temperature=0、top_k=1、repetition_penalty=1.1,见 generation_config.json),保证贪心解码结果可复现。
一条命令跑批处理:
python vllm_example.py --image-dir ./docs --out-dir ./out --concurrency 4输出目录里会同时得到每张图片的原始文本(.txt)和红框标注图(.annotated.jpg);把后处理接上,同一批图就能同时产出 HTML 页面、Markdown 文档、JSON API 和 CSV 报表。
质量怎么保证?
仓库内置了字节级校验机制:test_golden.py 对照 golden_outputs.json 中记录的 token 级生成序列做回归测试,确保模型、tokenizer 和处理器版本变更时输出不漂移。实测 8-bit 版本在规格表(spec_table)这类密集表格文档上字段准确率 0.8667,与 bf16 原版持平——而 4-bit 版本在同一文档会退化为重复循环(准确率 0.00),所以表格场景请务必使用 8-bit 版本。
小结
| 你的场景 | 推荐格式 | 对应函数 |
|---|---|---|
| 网页前端展示 | HTML | latex_table_to_html |
| 嵌入 Markdown 笔记/文档 | markdown | convert_html_tables_to_markdown |
| 入库 / API 消费 | json | convert_html_table_to_json |
| 需要保留合并单元格结构 | json_hierarchical | convert_html_table_to_json_hierarchical |
| Excel / 数据分析 | csv | convert_html_table_to_csv |
Nemotron-Parse-2.0-8bit 把"OCR 之后最脏最累的表格整理活"变成了传参级别的事:一行postprocess_text(text, cls, table_format='csv'),LaTeX 表格就变成你需要的任何格式。在 Apple Silicon 上 1.6 GB 就能跑起近实时的文档结构化流水线,这正是它作为 MLX 首个 Nemotron-Parse 移植版的价值所在。
【免费下载链接】Nemotron-Parse-2.0-8bit
相关推荐
Nemotron 3.5 Parse 后处理指南:6种表格格式转换与 Markdown 渲染实战
Nemotron 3.5 Parse 后处理指南:6种表格格式转换与 Markdown 渲染实战 Nemotron 3.5 Parse 是 NVIDIA 推出的
人工智能大模型多模态计算机视觉OCR从OCR文本到结构化数据:Nemotron-Parse-v1.2-4bit后处理与LaTeX表格转换实战
从OCR文本到结构化数据:Nemotron Parse v1.2 4bit后处理与LaTeX表格转换实战 Nemotron Parse v1.2 4bit 是
HunyuanOCR实战教程:扫描件与表格如何一键转换为Markdown、HTML与LaTeX
HunyuanOCR实战教程:扫描件与表格如何一键转换为Markdown、HTML与LaTeX HunyuanOCR 是腾讯混元推出的轻量级 OCR 视觉语言模
人工智能大模型计算机视觉多模态OCR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考