Skip to main content

Crate pagesift_ocr

Crate pagesift_ocr 

Source
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 客户端做,这里只给地址和校验)。
pdf
把 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§

GpuStats
显存和批次的统计(给评测和报告用)。
Image
一张 8 位图:灰度(1 通道)或 RGB(3 通道),按行存放、无行间填充。
Line
识别出的一行字。

Type Aliases§

Quad
图上的四边形:左上、右上、右下、左下四个角(像素坐标)。