Expand description
扫描页 OCR:PP-OCRv6 的文字检测(DB)和文字识别(SVTR + CTC),纯 Rust,CPU 或 N 卡上跑
(设备见 device,GPU 不可用时自动退回 CPU 并报告原因)。
权重是 PaddlePaddle 在 Hugging Face 上发布的 safetensors(Apache-2.0),首次使用时下载
(见 models),不随本仓库分发。
流程:整页图 → det::Det::detect 得到文字行的四边形 → 逐行裁出、拉正 →
rec::Rec::recognize 得到文字和置信度。
Re-exports§
pub use device::Device;pub use device::DeviceStatus;pub use device::ModelChoice;pub use device::Quality;pub use device::select_models;
Modules§
- det
- 文字检测(PP-OCRv6 small 和 medium det:LCNetV4 骨干 + 颈部(small 是 RepLKFPN,medium 是 LK-PAN + 类内关系块)+ DB 头 + DB 后处理)。
- device
- 设备与模型的选择:跑在哪(
Device)、实际跑在哪(DeviceStatus)、用哪档模型(select_models)。 - formula
- 公式识别(PP-FormulaNet_plus-L)的文本一侧:mBART 式解码器的贪心生成、字节级 BPE 的解码、
把输出整理成 LaTeX 的后处理。结构照 transformers 的
modeling_pp_formulanet.py与processing_pp_formulanet.py(Apache-2.0,PaddlePaddle 与 HuggingFace)。 - formula_
enc - PP-FormulaNet_plus-L 公式识别的图像编码器(到解码器交叉注意力的 memory 为止)。结构照
transformers 的
modeling_pp_formulanet.py与image_processing_pp_formulanet.py(Apache-2.0,PaddlePaddle 与 HuggingFace)里的PPFormulaNetVisionModel: - layout
- 版面检测:PP-DocLayoutV3(HGNetV2-L 骨干 + RT-DETR 式混合编码器 + 可变形注意力解码器),
输入整页图,输出带类别的区域框(正文、标题、公式、公式编号、表格、图……),按预测的阅读顺序排。
结构照 transformers 的
modeling_pp_doclayout_v3.py、modeling_hgnet_v2.py,预处理与后处理照image_processing_pp_doclayout_v3.py(均 Apache-2.0)。掩码转多边形不做。 - lcnet
- PP-LCNetV4 骨干(检测、识别共用)。结构照 transformers 的
modeling_pp_lcnet_v4.py(Apache-2.0,PaddlePaddle 与 HuggingFace):大 stem + 4 段深度可分离卷积块。 批归一化在载入时并进卷积。 - math
- 行间公式:版面模型找出公式框,公式模型把框里的图认成 LaTeX。框里的普通文字行由流水线去掉。
- models
- 模型清单:从哪下载、锁定的上游版本、每个文件的大小和 SHA-256;本地缓存目录与校验。 权重是 PaddlePaddle 在 Hugging Face 上发布的 PP-OCRv6 safetensors(Apache-2.0),不随本仓库 分发,打开 OCR 后第一次用时下载(下载由调用方用自己的 HTTP 客户端做,这里只给地址和校验)。
- 把
Engine接到 PDF 的扫描页接口上:第一张扫描图来时才准备模型(缺的先下载,由调用方提供 下载函数,本 crate 不碰网络)、才载入,没遇到扫描页的文档一点开销都没有。 - pipeline
- 整页流程:检测文字行 → 逐行裁出拉正 → 识别。裁行照 PaddleOCR 的
get_rotate_crop_image: 四边形按两组对边的长度定输出宽高,透视(这里用双线性四边形映射)拉成矩形; 高是宽的 1.5 倍以上时当作竖排,转 90°。 - rec
- 文字识别(PP-OCRv6 small rec)。结构照 transformers 的
modeling_pp_ocrv6_small_rec.py与image_processing_pp_ocrv6_small_rec.py(Apache-2.0,PaddlePaddle 与 HuggingFace):
Structs§
Type Aliases§
- Quad
- 图上的四边形:左上、右上、右下、左下四个角(像素坐标)。