# Reading order experiments Generated: 2026-07-02T21:56:08.956143+00:00 ## Current pipeline The reference experiment is `current_panel_then_in_panel_ranker`: panel ranking, worker-equivalent Borda pair aggregation, ground-truth panel membership, then in-panel bubble ranking. `current_worker_assignment_gt_boxes` uses the same ground-truth boxes but runs the browser assignment strategy before in-panel ranking, which isolates assignment mistakes from detector mistakes. ## Protocol - Split source: `C:\Users\remis\Documents\Projet Git\projet-one-piece-indexer\docker_scripts\train_panel_detector\dataset\manifest.json` - Development pages: 126 - Train pages: 101 - Validation pages: 25 - Test pages: 31 - Candidate selection uses validation metrics only. The test split is reported as a holdout and is not used for hyperparameter choice. Train metrics are used only as a tie-breaker when validation metrics are identical. - Real YOLO detector simulation: not_available ## Experiments | Experiment | Runtime | Test full | Pairwise | Position | Exact | |---|---:|---:|---:|---:|---:| | global_bubble_reranker_v1__sklearn-logistic__borda-vertical-repair | yes | 0.9677 | 0.9993 | 0.9932 | 30/31 | | global_bubble_reranker_v1__pure-logistic__borda-vertical-repair | yes | 0.9677 | 0.9993 | 0.9932 | 30/31 | | assignment_aware_global_reranker__sklearn-logistic__borda-vertical-repair | yes | 0.9355 | 0.9986 | 0.9863 | 29/31 | | assignment_aware_global_reranker__hist-gradient-boosting__borda-vertical-repair | no | 0.9355 | 0.9986 | 0.9863 | 29/31 | | global_bubble_reranker_v1__sklearn-logistic__borda | yes | 0.9032 | 0.9979 | 0.9795 | 28/31 | | global_bubble_reranker_v1__sklearn-logistic__topological | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | global_bubble_reranker_v1__sklearn-logistic__stable-local | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | assignment_aware_global_reranker__sklearn-logistic__topological | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | assignment_aware_global_reranker__sklearn-logistic__stable-local | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | global_bubble_reranker_v1__pure-logistic__borda | yes | 0.9032 | 0.9979 | 0.9795 | 28/31 | | global_bubble_reranker_v1__pure-logistic__bradley-terry | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | global_bubble_reranker_v1__pure-logistic__topological | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | assignment_aware_global_reranker__pure-logistic__borda-vertical-repair | yes | 0.9032 | 0.9979 | 0.9795 | 28/31 | | global_bubble_reranker_v1__hist-gradient-boosting__borda-vertical-repair | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | assignment_aware_global_reranker__hist-gradient-boosting__borda | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | assignment_aware_global_reranker__hist-gradient-boosting__bradley-terry | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | assignment_aware_global_reranker__hist-gradient-boosting__topological | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | assignment_aware_global_reranker__hist-gradient-boosting__stable-local | no | 0.9032 | 0.9979 | 0.9795 | 28/31 | | current_panel_then_in_panel_ranker | yes | 0.8710 | 0.9971 | 0.9726 | 27/31 | | current_worker_assignment_gt_boxes | yes | 0.8710 | 0.9971 | 0.9726 | 27/31 | ## Selection - Selected by validation: `global_bubble_reranker_v1__sklearn-logistic__stable-local` - Selected runtime candidate: `global_bubble_reranker_v1__sklearn-logistic__borda-vertical-repair` - Runtime decision: enabled_by_metrics - Reason: Selected runtime-compatible candidate beat the current baseline. ## Selected model metrics | Split | Full | Pairwise | Position | Exact | Inversions | |---|---:|---:|---:|---:|---:| | train | 0.8812 | 0.9972 | 0.9736 | 89/101 | 13 | | validation | 0.9600 | 0.9985 | 0.9844 | 24/25 | 2 | | test | 0.9677 | 0.9993 | 0.9932 | 30/31 | 1 | ## Baseline comparison - Baseline: `current_panel_then_in_panel_ranker` - Candidate: `global_bubble_reranker_v1__sklearn-logistic__borda-vertical-repair` - Compared split: test (31 pages) - Delta page_full_accuracy: +0.0968 - Delta page_exact_matches: +3 - Delta global_pairwise_accuracy: +0.0021 - Delta bubble_position_accuracy: +0.0205 - Delta inversion_count_total: -3 - Corrected pages: 381, 459, 496 - Regressed pages: none - Still wrong pages: 356 - Changed but still wrong pages: none ### Corrected pages - page 381: inversions 1 -> 0, assignment errors 0 -> 0, outside-panel bubbles 0 -> 0 - page 459: inversions 1 -> 0, assignment errors 0 -> 0, outside-panel bubbles 0 -> 0 - page 496: inversions 1 -> 0, assignment errors 0 -> 0, outside-panel bubbles 0 -> 0 ### Regressed pages - none ### Remaining wrong pages - page 356: inversions 1 -> 1, assignment errors 0 -> 2, outside-panel bubbles 0 -> 0 ## Artifacts - Metrics: `docker_scripts/train_reading_order/metrics/reading_order_benchmark.json` - Predictions: `docker_scripts/train_reading_order/predictions/benchmark_page_orders.json` - Optional ONNX: `docker_scripts/train_reading_order/models/global_bubble_order.onnx` ## Reproduction ```powershell python docker_scripts/train_reading_order/train_reading_order.py python docker_scripts/train_reading_order/benchmark_reading_order.py python docker_scripts/package_one_shot_models/prepare_and_upload.py cd frontend npm run lint npm run build ```