Skip to main content

Module layout

Module layout 

Source
Expand description

Layout analysis via PP-DocLayoutV3 (PaddleX paddle3.0.0).

Porting Rust del layout analyzer PP-DocLayoutV3 (PaddleX / PaddleOCR). Il modello è uno YOLO-style detector che produce 25 classi di regioni documentali (text/title/table/figure/header/footer/…).

§Pipeline

  1. Preprocess: resize letterbox a 800×800 (preserva aspect ratio, pad bottom-right con zeri), poi ImageNet normalize (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]). HWC→CHW + batch.
  2. Inference: 3 input ONNX:
    • im_shape [1,2] = [800.0, 800.0]
    • image [1,3,800,800] = blob normalizzato
    • scale_factor [1,2] = [scale, scale] (Paddle internamente post-processa rescaling delle bbox alle coord originali).
  3. Output: [N, 7] con [class_id, score, xmin, ymin, xmax, ymax, read_order].
  4. Postprocess: confidence threshold + NMS (IoU 0.5) + sort per reading order (col 6).

Il modello PaddleX rimappa internamente le bbox alle dimensioni originali tramite scale_factor, quindi le coordinate finali sono già in pixel sull’immagine input.

Structs§

LayoutAnalyzer
Analyzer wrapper che mantiene la ort::Session per PP-DocLayoutV3.
LayoutBox
Bounding box di una regione layout, coordinate in pixel sull’immagine di input ORIGINALE (post-rescaling fatto internamente da PaddleX).

Enums§

LayoutClass
25 classi di PP-DocLayoutV3 (config.json del rilascio PaddleX). Mappate 1:1 dalle output predictions del modello.
SemanticClass
Categoria semantica semplificata (8 classi). Usata per markdown export e per il rendering UI engine-agnostic.

Constants§

LAYOUT_INPUT_SIZE
Dimensione fissa input PP-DocLayoutV3.

Functions§

xy_cut_order
Ordina i layout-box in reading-order usando l’algoritmo XY-Cut ricorsivo.