【免费下载链接】ndlocr-liteNDLOCR-Liteアプリケーションのリポジトリソースコードを含むNDLOCR‑Lite application repository (including source code)项目地址https://gitcode.com/gh_mirrors/nd/ndlocr-lite点击查看免费下载NDLOCR-Lite 是国立国会图书馆NDL开源的轻量级日语 OCR 工具无需 GPU 即可在普通笔记本上高速识别图书、杂志的数字化扫描件。它的文字识别文本识别核心正是本文主角——三级 PARSeq 级联推理机制由三个输入宽度不同24×256 / 24×384 / 24×768的 PARSeq 识别模型按“行内字数”分级接力让短行走小模型、长行自动升级到长行模型从而一次识别整行长文本兼顾 CPU 推理速度与识别精度。 一、先认识三个“大小不同”的 PARSeq 识别模型PARSeqPermutated Autoregressive Sequence是一种自回归式的场景文字识别模型NDLOCR-Lite 用 ONNX 格式打包了三个不同规格的识别模型统一存放于 src/model/ 目录级别输入分辨率高×宽适用字数ONNX 模型文件第一级24×256约 30 字以内parseq-ndl-24x256-30-tiny-189epoch-tegaki3-r8data-202604.onnx第二级24×384约 50 字以内parseq-ndl-24x384-50-tiny-300epoch-tegaki3-r8data-202604.onnx第三级24×768约 100 字长行主力parseq-ndl-24x768-100-tiny-153epoch-tegaki3-r8data-202604.onnx设计思路很直白输入宽度决定一次能“装下”多少个字。同一行字如果被强行压缩进 256 像素的窄条里字会糊掉但反过来让一行只有几个字的页码也占用 768 像素的算力又太浪费。所以三个模型各管一段级联使用。三个模型的 ONNX 推理封装在 src/parseq.py 的PARSEQ类中支持 CPU 与 CUDA 双执行器onnxruntime默认 CPU 单线程运行保证在普通笔记本上也能流畅跑通。 二、DEIMv2 布局检测级联的“分诊台”级联推理的起点是布局识别模型 DEIMv2src/deim.py。它把整页图像切成 17 类版式元素正文行、标题、注、表、图……类别定义见 src/config/ndl.yaml而其中最关键的输出之一是pred_char_count预测字符数detections.append({ class_index: class_index, confidence: score, box: bbox, pred_char_count: char_count, # 该行预计有多少个字符 ... })预测字符数随后被写入中间 XML 的PRED_CHAR_CNT属性src/ndl_parser.py成为级联路由的分诊依据——每一行文本“先挂号再分科”。 三、核心机制三级级联路由 逐级溢出升级级联逻辑全部位于 src/ocr.py 的process_cascade()函数中规则可以用一张表说清第一步按预测字数分诊预测字数首跑模型30 字左右第一级24×25650 字左右第二级24×384其余长行为主第三级24×768第二步溢出升级关键精妙之处第一级跑完若输出≥ 25 个字符说明小模型“读满了”、行其实更长→ 该行自动升级到第二级重跑第二级跑完若输出≥ 45 个字符→ 继续升级到第三级重跑第三级即为终点输出即最终结果。也就是说即使 DEIMv2 的字数预测有偏差级联机制也能通过“输出长度”这一硬信号兜底纠偏小模型装不下的行一定会被更大的模型接住。第三步超长行的二次切割若第三级输出≥ 98 个字符且该行是横排宽 高程序会把这一行图像从中间竖着切成左右两半分别用第三级模型识别再把两段文字首尾拼接targetdflist200.append(RecogLine(npimgbaseimg[:, :baseimg.shape[1]//2, :], ...)) targetdflist200.append(RecogLine(npimgbaseimg[:, baseimg.shape[1]//2:, :], ...))两半各约 100 字合并后单行最多可识别约 200 字——这就是“一次识别整行长文本”的真正来源。⚡ 四、线程池并行三级模型同时开跑process_cascade()内部用ThreadPoolExecutor管理三个识别器的任务三级的首批任务同时提交并发执行后续溢出升级的任务再动态追加。由于 ONNX 推理会释放 GILCPU 上可获得接近多核并行的加速。对整页动辄几十上百个文本行的场景这一细节显著缩短了总耗时。 五、预处理小细节竖排字行怎么办在 PARSEQ.preprocess() 中若行图像高 宽 × 0.8典型竖排文本行先逆时针旋转 90° 转为横排再识别缩放到模型固定输入尺寸BGR→RGB按÷127.5 − 1.0归一化推理输出经argmax取字符 ID遇第一个终止符截断再按字符表映射成文字字符表来自 src/config/NDLmoji.yaml。竖排古籍书稿识别后的效果示意蓝色为识别框 六、实测效果与适用场景这种“小模型打底 大模型兜底 超长行切割”的组合让 NDLOCR-Lite 在纯 CPU 环境下依然能保持高速短行页码、标题、注由 24×256 小模型快速消化长行才消耗大模型算力。按 README.md 公开的评测v1.2.1其在 JaWildText 手写字集 1065 张图上的整体 CER字符错误率约 0.268横写、竖写均能覆盖。下图左为扫描原图昭27 年度国立国会图书馆年报右即三级级联识别输出的文本区域可视化 延伸阅读命令行用法与参数说明--rec-weights等三级模型路径选项README.md三个识别模型的再训练与 ONNX 转换流程train/README.md字符上限由max_label_length控制见 train/parseqcode/configs/main_tiny768.yaml桌面版 GUI 使用方法ndlocr-lite-gui/README.md一句话总结预测字数分诊 → 小模型起步 → 输出超长自动升级 → 极限长度对半切割四步接力就是 NDLOCR-Lite 用轻量 PARSeq 级联推理在普通电脑上读完整行长文本的秘密。赞分享【免费下载链接】ndlocr-liteNDLOCR-Liteアプリケーションのリポジトリソースコードを含むNDLOCR‑Lite application repository (including source code)项目地址https://gitcode.com/gh_mirrors/nd/ndlocr-lite点击查看免费下载相关推荐为什么改样式不生效Open Event Theme 三级主题继承机制深度解读为什么改样式不生效Open Event Theme 三级主题继承机制深度解读 改了半天样式页面却纹丝不动这通常是 Open Event Theme 的主题为什么上下文长度决定推理成本LLM Architecture Gallery 的 KV Cache 字段深度解析为什么上下文长度决定推理成本LLM Architecture Gallery 的 KV Cache 字段深度解析 上下文长度决定推理成本根本原因藏在 KV为什么拼错也能找到fsearch模糊搜索与拼写容错机制深度解析为什么拼错也能找到fsearch模糊搜索与拼写容错机制深度解析 想找一个文件却因为记错了几个字母而一无所获 fsearch 是一款面向 macOS 的全盘创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考