Kosmos-2.5 模型输出案例全解析:文档级文本识别与图像转 Markdown 的实战指南
发布时间:2026/9/14 0:07:01 作者:尧图编辑部 阅读量:1,286

Kosmos-2.5 模型输出案例全解析文档级文本识别与图像转 Markdown 的实战指南【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilmCASES.md 是 Kosmos-2.5 多模态读写模型官方公开的模型输出案例文档集中展示了该模型在两类核心转录任务上的真实输入输出表现端到端文档级文本识别Text Recognition即带空间信息的 OCR与图像转 Markdown 结构化文本生成Image to Markdown。本文以 kosmos-2.5/CASES.md 的案例为骨架结合 kosmos-2.5/inference.py、kosmos-2.5/kosmos2_5/ 下的源码实现逐例解读输出背后的 token 序列构造、特殊符号字典与结果后处理逻辑并给出可复现这些案例的完整安装与推理命令帮助读者理解 Kosmos-2.5 如何用单一生成式模型同时完成两项相互协作的文本密集图像理解任务。CASES.md 在 Kosmos-2.5 项目中的定位在仓库的官方首页 kosmos-2.5/README.md 中项目通过一张输入 / ocr prompt 输出 / markdown prompt 输出的三联图示意模型能力并明确注明更多模型输出见 CASES.md原文为More model outputs can be found in the CASES.md。因此CASES.md 是理解 Kosmos-2.5 实际输出形态的第一手资料它以输入图片 vs 模型输出对照表的形式围绕两个任务组织案例Text Recognition Task文本识别任务4 组案例覆盖屏幕截图screen、演示文稿ppt、PDF 文档、扫描文档CDIPImage to Markdown Task图像转 Markdown 任务2 组案例覆盖 GitHub README 页面与 LaTeX 数学公式文档。这两类任务对应 README 中描述的 Kosmos-2.5 两大核心能力生成空间感知的文本块每个文本块带图像内空间坐标与生成捕获样式与结构的 Markdown 结构化文本。下面分别展开每一组案例的细节与源码实现。任务一端到端文档级文本识别Text Recognition案例总览以下完整保留 CASES.md 中 Text Recognition 任务的 4 组输入输出对照图片均位于仓库 kosmos-2.5/assets/cases/ 目录InputOutput案例解读从文档图像到文本 空间框四组输入分别代表了真实世界中最常见的四类文本密集图像屏幕截图screen网页界面含导航栏、正文段落、侧边栏等混合排版演示文稿ppt含标题、列表、代码示例与图形的幻灯片页面PDF正式报告页面含标题、列表、表格与多段正文CDIP 扫描件带有手写签名的采购订单类扫描文档文字与表格存在扫描噪声。从输出列可以看到Kosmos-2.5 的文本识别结果并非单纯吐出文字而是以带空间位置信息的文本块形式呈现每个被识别的文本块都配有一个边界框bounding box从而把识别出什么字与字在图像哪里统一在一个生成序列中解决。这与传统两阶段 OCR先检测后识别范式有本质区别——空间信息由生成式模型直接产出无需独立的检测器。源码级原理 提示、 与坐标 token文本识别任务的输出结构可以从推理源码中得到精确印证。在 inference.py 的build_data函数中任务提示 token 的构造逻辑是if args.do_ocr True: text_token [dictionary.index(ocr), dictionary.index(bbox)]即当执行 OCR 任务时模型在图像特征之后拼接ocr与bbox两个特殊 token作为引导解码器生成带边界框的文本的任务提示。生成结果如何还原为文本 坐标见get_ocr_resinference.py。该函数逐行扫描生成的 token 序列以开头的连续 token 被收集为边界框描述其中第一个必须是bbox最后一个必须是/bbox框内恰好 4 个坐标 token形如x_123、y_45通过split(_)取出数字即为归一化坐标非开头的 token 序列被tokenizer.decode还原为行文本最后在ocr_post_process中将归一化坐标按比例映射回原始图像尺寸并做clip截断防止越界。这些坐标 token 的字典来源见 kosmos-2.5/kosmos2_5/data/utils.pySPECIAL_SYMBOLS中除ocr、image、/image、bbox、/bbox、md等语义符号外还批量注册了x_0~x_4095与y_0~y_4095共 8192 个坐标 token作为空间位置的离散化表示。输出 JSON 结构OCR 结果最终以 JSON 文件保存默认输出到--out_dir其结构与get_json_formatinference.py一致{ model: kosmos 2.5, task: ocr, width: 原图宽度, height: 原图高度, results: [ { text: 识别出的文本行, bounding box: {x0: 0, y0: 0, x1: 100, y1: 50} } ] }任务二图像转 MarkdownImage to Markdown案例总览以下完整保留 CASES.md 中 Image to Markdown 任务的 2 组输入输出对照InputOutput案例解读从版面图像到结构化 MarkdownREADME 案例输入是一个 GitHub 仓库的 README 页面含标题、Install / Physical Setup / Configure / Update 等章节、代码块、超链接输出保留了标题层级、代码块与链接结构的 Markdown 文本说明模型不仅识别文字还理解了版面结构与样式语义LaTeX 案例输入是含数学公式与数据表格的学术论文页面如分支比表格、B_s \to \gamma \mu^ \mu^-类公式输出保留了表格的列对齐、上下标数值与 LaTeX 公式语法验证了模型对复杂版面表格、公式的结构化转录能力。源码级原理 提示与 Markdown 后处理与 OCR 不同Markdown 任务的任务提示只有一个 token。build_data中inference.pyelse: text_token [dictionary.index(md)]生成完成后get_markdown_resinference.py执行后处理截取/image之后到/s之前的 token 段用tiktoken的cl100k_base编码器解码为原始 Markdown 文本将模型输出的br标记替换为真实换行\n逐行去除首尾空白并把连续空行压缩为单个空行得到整洁的 Markdown。输出 JSON 结构同样固定task字段为markdown{ model: kosmos 2.5, task: markdown, width: 原图宽度, height: 原图高度, results: # 转换后的 Markdown 正文 }案例背后的统一架构一个模型如何同时完成两项任务CASES.md 展示的两个任务看似不同实际共享同一套生成式架构这正是 Kosmos-2.5 设计的关键共享的 decoder-only 自回归 Transformer 任务提示prompt 灵活的文本表示。源码可以完整还原这条链路输入序列的构造在build_datainference.py中送入模型的 token 序列依次为bos序列起始image 2048 个图像特征占位 token /image图像区域配合img_gpt_input_mask将视觉特征注入 GPT任务提示 tokenocr bboxOCR或mdMarkdown。图像本身通过AutoProcessor.from_pretrained(google/pix2struct-large, is_vqaFalse)处理为flattened_patches与attention_maskinference.py最多支持 4096 个 patch见 kosmos2_5/tasks/generation.py 的MAX_PATHES4096。模型主体视觉编码器 连接器 GPT 解码器模型定义在 kosmos2_5/models/unigpt.py 的UniGPTmodel中视觉编码器Pix2StructVisionModelload_image_model中从args.image_encoder加载连接器XConnectorkosmos2_5/models/connector.py先做线性投影再引入可学习的latent_query通过一层 cross-attention 把视觉特征压缩对齐到 GPT 的隐空间GPT 解码器自回归语言模型主体注册的架构unigptmodel_largeunigpt.py为 24 层、隐维度 1536、16 个注意力头、约 1.3B 参数规模。训练与推理阶段的字典由 kosmos2_5/tasks/generation.py 的GenerationTask.setup_dictionary加载dict.txt并将SPECIAL_SYMBOLS含ocr、md、bbox、坐标 token 等追加为字典符号保证提示 token 与坐标 token 均可被生成。推理默认配置inference.py为贪心解码beam1、max_len_b4000、min_len1、lenpen1.0并在init中开启 FP16、加载 checkpoint 到 GPU。整个main流程对每张图片走一遍构造输入 →task.inference_step生成 → 按任务后处理 → 写 JSON与 CASES.md 中每组案例的产出路径完全一致。复现案例安装、模型下载与推理实战环境与安装Kosmos-2.5 的代码依赖 Flash Attention 2见 kosmos-2.5/requirements.txt因此仅支持 Ampere、Ada 或 Hopper 架构 GPU如 A100、RTX 3090、RTX 4090、H100。安装步骤git clone https://github.com/microsoft/unilm.git cd unilm/kosmos-2.5 pip install -r requirements.txtrequirements.txt 中除tiktoken、tqdm、omegaconf2.1.0、numpy1.22、scipy1.10、fairscale0.4、flash-attn、triton等常规依赖外还从外部源码安装了 fairseq、infinibatch、torchscale、transformers 等工具包请确保按清单完整安装。下载模型权重按 README 说明可通过以下命令下载官方发布的 checkpoint该权重比论文报告版本训练了更多步数wget -O ckpt.pt https://huggingface.co/microsoft/kosmos-2.5/resolve/main/ckpt.pt?downloadtrue推理命令执行 OCR对应 CASES.md 的 Text Recognition 案例python inference.py \ --do_ocr \ --image path/to/image \ --ckpt path/to/checkpoint执行图像转 Markdown对应 CASES.md 的 Image to Markdown 案例仅需将--do_ocr换成--do_mdpython inference.py \ --do_md \ --image path/to/image \ --ckpt path/to/checkpoint命令行约束在 inference.py 中校验--image指向的文件必须存在--do_ocr与--do_md必须二选一且不能同时开启assert (args.do_ocr and not args.do_md) or (args.do_md and not args.do_ocr)。结果按原图片名.json保存到--out_dir默认./。针对极端宽高比图片的预处理对于宽高比极端的图片例如超长截图、超宽表格README 建议先做宽高比规整再推理以获得更稳定的效果python inference.py \ --do_ocr \ --image path/to/image \ --ckpt path/to/checkpoint \ --use_preprocess \ --hw_ratio_adj_upper_span [1.5, 5] \ --hw_ratio_adj_lower_span [0.5, 1.0]参数含义README 原文说明同时与 inference.py 的实现一一对应--hw_ratio_adj_upper_span [1.5, 5]当图片宽高比高/宽落在 1.5 到 5 之间时将图片等比缩放到宽高比为 1.5即把过高的图压缩到合理比例--hw_ratio_adj_lower_span [0.5, 1.0]当宽高比落在 0.5 到 1.0 之间时将图片等比缩放到宽高比为 1.0即把过宽的图拉伸到接近正方形。两个参数均通过parse_list解析为 Python listinference.py请按实际图片分布调整区间预处理后的图片再交给image_processor切 patch因此该参数只影响送入模型的图像比例不改变输出 JSON 中记录的原始宽高。注意事项与适用边界由于 Kosmos-2.5 本质上是生成式模型generative modelREADME 明确警示生成过程中存在幻觉hallucination风险无法保证图片中所有 OCR / Markdown 结果的绝对准确。因此在实际应用中对结果可结合人工抽检或下游规则进行校验尤其在高精度要求的票据、合同等场景。若希望量化了解该模型在各类文档上的水平可参考 kosmos-2.5/README.md 中的评测表Text Recognition 在 Handwritten / Design / Receipt / General / Academic / Web Image 六类数据集上的 F1、IOU、NED 指标以及 Image to Markdown 在 Docx / README / Arxiv / Tables / Math Equation / CROHME Math 上的 NED 与 NTED 指标。CASES.md 的定性案例与 README 的定量指标互为印证共同勾勒出 Kosmos-2.5 在文本密集图像理解上的能力边界。小结CASES.md 用六组输入输出对照直观呈现了 Kosmos-2.5 的两项核心转录能力。结合 inference.py 的 token 构造与后处理逻辑、kosmos2_5/data/utils.py 的特殊符号字典、kosmos2_5/models/unigpt.py 的统一架构可以看出OCR 输出文本 边界框Markdown 输出结构化文本二者均由同一 decoder-only 模型通过不同任务提示驱动。读者可依照上文安装、下载权重并运行推理命令在自己的屏幕截图、PPT、PDF、扫描件与学术文档上复现这些案例进而将 Kosmos-2.5 应用到文档解析、知识库构建等文本密集图像理解场景中。【免费下载链接】unilmLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities项目地址: https://gitcode.com/GitHub_Trending/un/unilm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考