展开本页目录
开始前准备什么
- LightOnOCR-3采用本地或自有授权服务;4B/0.8B为Qwen3.5架构,1B架构不同,显存还受图片与上下文影响,不承诺某张卡必定够用。
- 使用官方仓库锁定的兼容依赖;当前仓库说明vLLM0.30.0与Transformers5.16.1,模型卡的旧最低版本不能替代锁文件。
- 模型Apache2.0;仅空prompt或grounding是文档支持输入,原生PDF与检查无需付费,模型识别未执行。
- 准备一张极简原稿
- 建立处理器输入
- 执行生成并保留ID
- 切出生成尾段
- 对照完整与切片解码
- 检测下游污染
- 交付解码证据
1. 准备一张极简原稿
页面只写三项领料记录,排除复杂布局干扰。
先保存图像摘要,后续长度检查不以换图产生差异。
2. 建立处理器输入
使用匹配模型的processor.apply_chat_template产生input_ids。
记录shape末维长度,不手写一个固定prompt长度。
3. 执行生成并保留ID
保存生成后的完整token序列元数据。
不把它直接全部decode为最终OCR文件。
4. 切出生成尾段
使用output_ids[0,inputs["input_ids"].shape[1]:]取得新增token。
批处理时逐样本考虑实际长度与padding,不能把别人的长度直接套用。
5. 对照完整与切片解码
只在调试文件显示两种结果,检查聊天模板前缀是否进入正文。
正式OCR只采用正确切片的结果,并保留special token处理设置。
6. 检测下游污染
让解析器拒绝正文开头出现作者构造的role/template标记。
该检查只是异常信号,不替代原文校对。
7. 交付解码证据
保存输入长度、输出长度、切片表达式和实际文本。
作者伪token样本只用于测试索引,不作为真实模型运行指标。
下载本课材料并开始操作
练习包包含本课的具体输入、可编辑数据、正反样例与七步说明。index.html 可离线查看原件和验收参考,actual-results.csv 用于记录你实际操作后的结果。
怎样确认已经完成
- 切片起点来自实际input_ids长度。
- 正式正文不含输入聊天模板前缀。
- token长度仅记录真实运行值。
常见问题
LightOnOCR3结果里混进user和提示词怎么办?
先看是否把整个生成序列解码了。官方示例按input_ids长度切掉输入前缀,再解码新增token,本课用两份调试文本定位这个问题。
每张图都可以固定跳过128个token吗?
不能。输入长度取决于模板和图像等,必须从实际张量读;固定数字会截掉正文或残留提示。



