6 行代码把截图变成 Markdown/HTML/LaTeX:TeleOCR 极简调用实测
6 行代码把截图变成 Markdown/HTML/LaTeXTeleOCR 极简调用实测【免费下载链接】TeleOCR项目地址: https://ai.gitcode.com/XingChen-AGI/TeleOCR做技术分享和论文笔记时最烦的就是截图里的内容无法直接复用公式要手抄成 LaTeX表格要对着像素一格一格敲代码截图只能靠肉眼转写。传统 OCR 只能吐纯文本而完整的文档解析管线往往要串联版面分析、文字检测、表格结构还原、公式渲染四五个模型部署成本高、中间环节还容易互相放大错误。TeleOCR 把这件事压缩到了一个端到端的视觉语言模型里约 1.2B 参数基于 Qwen2.5-VL 架构输入一张截图直接输出 Markdown 文本、LaTeX 公式或 HTML 表格。在 OmniDocBench v1.6 上以 96.87 的综合得分登顶表格 TEDS 达 97.05同时还能处理手机拍歪的弯折文档。更关键的是官方 README.md 给出的最小调用代码只有寥寥数行。这篇文章就用仓库里的真实代码和样例图片实测它的三种输出格式并踩一遍分辨率与图片比例这些最容易翻车的坑。一张截图直出结构化文本凭什么是它先看架构。仓库根目录的 config.json 显示TeleOCR 是一个标准的 Qwen2.5-VL 生成式视觉语言模型28 层 Decoderhidden_size 1024、16 注意力头、8 组 KV 头做 GQA 加速配一个 32 层的 ViT 视觉编码器window_size 112 的窗口注意力第 7/15/23/31 层做全注意力PatchMerger以 2×2 的空间合并压缩视觉 token词表扩充到 151936除了|box_start|、|quad_start|这类坐标 token还内置了表格专用的 OTSL 标记符。参数小但能力并不单薄。README 的实验结果表里TeleOCR 以 1.2B 参数量在 OmniDocBench v1.6 上拿下 96.87 总分文本编辑距离 0.027、公式 CDM 96.36、表格 TEDS 97.05 全部位居前列甚至压过了 Qwen3-VL-235B、GPT-5.2 这类数百亿参数的大模型模型本身已经开源并随仓库附带权重文件model.safetensors配合pip install transformers torch pillow就能跑起来单张消费级显卡即可部署这也是它能作为截图转写工具日常使用的前提。6 行代码的最小调用核心就两个 API打开 README.md 的 Quick Start核心推理函数infer的逻辑可以压缩成下面 6 行构造消息 → 套用聊天模板 → 走 processor 预处理 →model.generate生成 → 截掉输入 token → 解码成文本。def infer(image: Image.Image, prompt: str) - str: messages [{role: system, content: You are a helpful assistant.}, {role: user, content: [{type: image}, {type: text, text: prompt}]}] chat_prompt processor.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) inputs processor(text[chat_prompt], images[image.convert(RGB)], paddingTrue, return_tensorspt).to(devicemodel.device, dtypemodel.dtype) output_ids model.generate(**inputs, use_cacheTrue, max_new_tokens4096, do_sampleFalse) output_ids output_ids.cpu().tolist()[0][len(inputs.input_ids[0]):] return processor.batch_decode([output_ids], skip_special_tokensTrue, clean_up_tokenization_spacesFalse)[0].strip()模型加载同样只有两行processor AutoProcessor.from_pretrained(StarDoc-AI/TeleOCR, trust_remote_codeTrue, use_fastTrue) model AutoModel.from_pretrained(StarDoc-AI/TeleOCR, trust_remote_codeTrue, torch_dtypetorch.bfloat16).cuda().eval()整个调用过程没有任何检测、识别、结构化的中间步骤infer的输入是一张 PIL 图片加一句 prompt输出就是结构化文本。注意model.generate里显式设置了do_sampleFalse而仓库的 generation_config.json 也把temperature压到 0.1、top_k设为 1配合 1.05 的 repetition penalty——说明官方推荐的是近贪婪的确定性解码同一张图每次识别结果一致这对批处理、回归测试和生产流水线是很有价值的特性。同一张论文截图文本、LaTeX、HTML 三格式实测TeleOCR 之所以一条 prompt 通吃是因为它把输出格式做成了提示词里的一个开关。下面用仓库 assets 里的样例图分别实测。文本一句话输出纯文本对于纯文字段落直接给出Please output the text content from the image.输出就是干净的文本也可以直接当 Markdown 用image Image.open(assets/text.png).convert(RGB) raw_text infer(image, Please output the text content from the image.) print(raw_text.strip())公式LaTeX 直出还自动补齐$$包裹对公式截图把 prompt 换成 LaTeX 指令模型直接输出\sum、\int这类标准 LaTeX 表达式raw_formula infer(image, Please write out the expression of the formula in the image using LaTeX format.)仓库在 README.md 的post_process里还内置了一段公式规整逻辑把输出里残留的\[/\]剥离若内容没有$包裹则统一包成$$...$$块方便直接粘贴进 Markdown 渲染content content.removeprefix(\\[).removesuffix(\\]).strip() if not (content.startswith($) and content.endswith($)): content f$${content}$$表格OTSL 中间格式6 个 token 保住合并单元格表格是文档解析里最容易被传统 OCR 做崩的部分尤其是含 rowspan/colspan 的合并单元格。TeleOCR 的做法是让模型先输出一种名为 OTSL 的中间格式——只用 6 个特殊标记符描述单元格相对位置nl换行、fcel单元格起始带文本、ecel单元格结束、lcel向右跨列、ucel向下跨行、xcel双向跨。由于坐标关系是相对位置而非绝对像素合并单元格的层级能被完整保留raw_otsl infer(image, This is the image of a table. Please output the table in OTSL format.) print(convert_otsl_to_html(raw_otsl))随后由仓库自带的convert_otsl_to_html把 token 序列确定性解析成带rowspan/colspan的标准 HTML——解析逻辑_otsl_parse_texts里的_count_right与_count_down在 README.md 中有完整实现整个转换是纯函数、无随机性也就杜绝了模型直接生成 HTML 时的标签错位问题。科学图表绕开画布直接挖表格更实用的是这个能力还能延伸到科学图表给一张折线图、柱状图截图prompt 指定提取这张图隐含的表格模型会直接把图里的数据点结构化输出成表格再走 OTSL→HTML 的同一路径raw_figure infer(image, This is a scientific figure. Please extract the table implied by this figure.) print(convert_otsl_to_html(raw_figure))同一个模型为什么敢直接喂拍歪的截图用手机拍文档、拍屏幕最常见的输入其实是透视变形、弯曲的书页。传统管线必须先跑一个矫正模块否则后续版面分析全崩。TeleOCR 的思路是把矫正能力直接内化进模型README 在layout_distorted.jpg上直接做多点版面分割Multi-point Layout Segmentation Analysis.并引用了 DocUNet、DIR300 两个去畸变数据集上的可视化评估证明它不需要去畸变预处理或专门的矫正模型就能在复杂几何形变下完成版面与内容解析README 还列出了几项为此服务的训练技术几何感知的文档建模Geometry-aware modeling、CGDP 曲率引导采样、多节点共识投票MCV自动生成伪标签以及内容-结构解耦的三阶段训练。简单说训练阶段见过了足够多的歪图推理时就能把歪当作特征而不是噪声来消化。对用户而言这意味着截图怎么拍基本都能喂省掉一整条预处理链路。翻车点实测分辨率与图片比例决定成败能力再强输入处理不当照样翻车。仓库的 preprocessor_config.json 给出了两个关键数字min_pixels: 3136, max_pixels: 12845056,这是 Qwen2.5-VL 动态分辨率机制的两端图片先被等比缩放使总像素数落在 3136约 56×56到 12845056约 3584×3584之间再切分成 14×14 的 patch 送入 ViT。由此可以推出四个高发翻车点1. 超长截图会被暴力压缩。一张网页长截图往往远超 1284 万像素上限预处理阶段会被等比缩小到边界内小字号文字直接糊成一片。对策是分块把长图切成若干 1:1 左右的段落分别喂入再自行拼接结果。2. 比例失衡浪费分辨率预算。视觉 token 数与图像像素数成正比一张 3:1 的超宽截图会把大量 token 花在留白上有效文字区域反而得不到足够的分辨率。README 里版面分析的样例就明确把图resize((1036, 1036), Image.Resampling.BICUBIC)后再推理——1036 是 28 的倍数恰好能被 patch 尺寸整除这说明接近正方形、且长宽为 28 的倍数的输入是官方验证过的稳定形态3. 别做二值化等好心预处理。社区实测中普遍反馈灰度化、二值化、锐化这类传统 OCR 的常规动作反而会抹掉模型赖以判断版面与公式结构的光影信息TeleOCR 吃原图的效果明显更好。预处理只需要保证够亮、够清楚、不要被拉伸变形。4. 输出有 4096 token 上限。infer里固定了max_new_tokens4096解析超大表格或长文档时输出可能被截断。遇到大版面优先分块而不是整页硬塞这也与第一点形成闭环。结语6 行核心代码、一个模型、几段不同的 promptTeleOCR 把截图 → Markdown/HTML/LaTeX这条原本要四五套模型协作的流水线收敛成了图 一句话的端到端调用。OTSL 中间格式保住了表格的结构完整性几何感知训练免掉了拍照文档的矫正预处理而生成侧的确定性解码让它在工程上足够可靠。剩下要做的就是在喂图时尊重它的分辨率边界——不二值化、不硬拉伸、长图分块截图解析这件小事就真的只剩 6 行代码了。【免费下载链接】TeleOCR项目地址: https://ai.gitcode.com/XingChen-AGI/TeleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

YOLOv8网球检测实战:数据集制作、模型训练到TensorRT部署全流程

YOLOv8网球检测实战:数据集制作、模型训练到TensorRT部署全流程

简介:这是一份面向打网球检测场景的YOLO系列目标检测数据集,适合使用YOLOv5、YOLOv8、YOLOv9等主流版本的算法工程师和研究者,可直接用于模型训练、验证与测试,解决打网球场景下训练数据匮乏、标注格式不统一等问题。数据集已经按…

2026/10/11 22:58:43 阅读更多 →
如何让NullHub开机自启:systemd与launchd系统服务注册完整教程

如何让NullHub开机自启:systemd与launchd系统服务注册完整教程

【免费下载链接】nullhub Management console for the Null ecosystem — install, configure, and monitor AI agents, orchestration workflows, task pipelines, and system health 项目地址: https://gitcode.com/gh_mirrors/nu/nullhub 点击查看 免费下载 想让…

2026/10/11 22:58:42 阅读更多 →
大模型编程提效四法则:结构化提示与渐进验证

大模型编程提效四法则:结构化提示与渐进验证

1. 先泼一盆冷水:GPT-6 与 Codex 并不存在,但这个标题背后藏着真问题你点开这篇文章,大概率是因为被“GPT-6”“Codex”“极致发挥”这几个词击中了——它们像一组精准投放的信号弹,在技术圈信息流里高频闪烁。但作为从业十年、亲…

2026/10/11 22:57:42 阅读更多 →

最新新闻

改进版Q-learning实战:Double Q、n步回报与经验回放

改进版Q-learning实战:Double Q、n步回报与经验回放

简介:基于Q-learning的改进版强化学习算法项目,聚焦路径规划场景,面向MATLAB用户及强化学习入门者。项目针对经典Q-learning收敛慢的问题,融合学习率衰减、动态ε-greedy探索、经验回放、目标网络与双线性更新等改进策略&#xff…

2026/10/11 23:38:45 阅读更多 →
定时任务从Crontab到XXL-JOB:选型、实现与运维避坑指南

定时任务从Crontab到XXL-JOB:选型、实现与运维避坑指南

定时任务这个东西,我在不同项目里来来回回用了好多年。最早是拿 shell 脚本挂着 crontab 跑,后来做 PHP 后台管理系统时研究过 likeadmin 这类框架里定时任务的执行机制,再到现在维护 SpringCloud 集群,又得面对分布式定时任务怎么…

2026/10/11 23:38:45 阅读更多 →
VOC垃圾检测数据集14963张:Darknet训练YOLO全流程指南

VOC垃圾检测数据集14963张:Darknet训练YOLO全流程指南

简介:面向YOLOv3/v4/v5及Darknet框架训练需求,这份VOC格式垃圾分类数据集提供了完整的图片、标注与标签体系。数据集中包含14963张垃圾图片,每张均对应同名xml标注文件和yolo格式txt文件,合计44类全英文标签,并额外提供…

2026/10/11 23:38:45 阅读更多 →
社交网络链路预测实战:Python图算法与VGAE工程化指南

社交网络链路预测实战:Python图算法与VGAE工程化指南

简介:本资源是一套面向高校本科生与研究生的社交网络链路预测实践项目,适用于毕业设计、课程设计及科研入门场景,聚焦图神经网络与传统相似性指标在关系预测中的建模与对比分析。压缩包含345个文件,总大小33.94MB,其中…

2026/10/11 23:38:45 阅读更多 →
HarmonyOS 7 GridRow:折叠屏筛选面板断点抖动门禁【鸿蒙心迹】

HarmonyOS 7 GridRow:折叠屏筛选面板断点抖动门禁【鸿蒙心迹】

相册筛选页最难解释的状态异常,有时并不出现在网络请求上。用户只是把折叠屏展开、收回,再展开,原本已经勾好的“城市、夜景、建筑”仍然亮着,结果列表却突然刷新两遍。更糟糕的是,第一次请求还没回来,第二…

2026/10/11 23:38:45 阅读更多 →
Q-learning改进版全解析:目标网络、经验回放与Double Q实战

Q-learning改进版全解析:目标网络、经验回放与Double Q实战

简介:这份资源是基于Q-learning改进的强化学习算法实现,开发工具为MATLAB,面向路径规划与人工智能学习者,适合机器人导航、网格寻路、游戏AI等场景下的最优策略求解问题。ZIP压缩包共包含21个文件,以19个.m脚本为核心&…

2026/10/11 23:37:44 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →