Skip to main content

create-table-classifier

Train vision classifiers for Camelot table extraction strategy prediction. Uses MobileNetV2 with GRPO training and Camelot execution feedback. Integrates with Federated Taxonomy for preset-aware predictions.

Datos de origen

Repositorio
grahama1970/agent-stack-public
Última actividad en el origen
24 de septiembre de 2026 a las 15:51
Idioma detectado de SKILL.md
inglés
Estrellas
0
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
25 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
create-table-classifier
description
Train vision classifiers for Camelot table extraction strategy prediction. Uses MobileNetV2 with GRPO training and Camelot execution feedback. Integrates with Federated Taxonomy for preset-aware predictions.
allowed-tools
Bash, Read
triggers
["train table classifier","table strategy training","camelot strategy model","extraction strategy training","s05 strategy predictor"]
metadata
{"short-description":"GRPO training for table extraction strategy prediction"}
provides
["create-table-classifier"]
composes
["task-monitor","agentic-evals"]
disciplines
["ml-training","extraction"]
# Create Table Classifier Train vision models to predict optimal Camelot extraction strategies for PDF tables. Uses GRPO with execution feedback from actual Camelot extractions. ## Training Approaches | Approach | Description | Use When | |----------|-------------|----------| | **GRPO (Recommended)** | RL with Camelot execution feedback | Production training | | **SFT Only** | Supervised fine-tuning | Quick baseline | | **Collect Only** | Data collection from corpus | Building dataset | ## Quick Start (GRPO with Execution Feedback) ```bash cd .pi/skills/create-table-classifier # 1. Setup environment cp .env.example .env # Edit .env with paths to corpus and extractor # 2. Collect training data from successful extractions ./run.sh collect \ --corpus /path/to/12tb/corpus \ --extractor-results /path/to/s05/outputs \ --limit 5000 # 3. Split data into train/eval ./run.sh split --input data/labels/collected.jsonl --train-ratio 0.85 # 4. Run full training pipeline (warmup -> GRPO -> eval) ./run.sh train-full \ --train-file data/labels/train.jsonl \ --eval-file data/labels/eval.jsonl \ --wandb # 5. Test inference ./run.sh infer --image data/images/test/sample.png ``` ## GRPO Training Pipeline ``` ┌─────────────────────────────────────────────────────────────────┐ │ GRPO Training Pipeline │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 1. Data Collection (from S05 successful extractions) │ │ PDF → Table Region → [Image, Strategy, Quality] │ │ │ │ 2. SFT Warmup (3 epochs) │ │ Initialize policy on high-quality extractions │ │ │ │ 3. GRPO Training Loop │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ Image ──▶ Generate N strategies ──▶ Execute Camelot │ │ │ │ │ │ │ │ │ ┌─────────────────────────────────────────┐ │ │ │ │ │ Reward = 0.5×Quality + 0.3×Speed │ │ │ │ │ │ + 0.2×PresetMatch │ │ │ │ │ └─────────────────────────────────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ Group-relative advantage ──▶ Policy update │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ 4. Evaluation on Holdout │ │ If fails: Retry with adjusted hyperparameters │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ## Reward Functions | Reward | Weight | Source | Description | |--------|--------|--------|-------------| | Quality | 50% | Camelot accuracy | Table extraction accuracy score | | Speed | 30% | Extraction time | Faster than baseline = bonus | | PresetMatch | 20% | Federated Taxonomy | Strategy matches preset expectations | ## Federated Taxonomy Integration The classifier predicts **preset-aware** strategies: ```json { "strategy": "lattice_sensitive", "line_scale": 15, "edge_tol": 300, "preset_hint": "arxiv_scientific", "domain": "scientific", "confidence": 0.92 } ``` **Preset-Strategy Mapping:** | Preset | Expected Strategy | line_scale | Notes | |--------|------------------|------------|-------| | arxiv_scientific | lattice_sensitive | 12-15 | Thin LaTeX borders | | requirements_spec | lattice | 20-25 | Structured tables | | archive_scanned | stream | 35-40 | OCR-degraded lines | ## Evaluation Thresholds | Metric | Threshold | Description | |--------|-----------|-------------| | strategy_accuracy | ≥ 85% | Correct strategy selection | | param_mae | ≤ 5 | Mean absolute error for line_scale | | fallback_rate | ≤ 10% | Tables needing retry | | avg_quality | ≥ 0.85 | Mean extraction quality | ## Architecture ``` Table Region Image (224x224) │ ▼ ┌─────────────────────────────────────────────┐ │ MobileNetV2 (pretrained ImageNet) │ │ + Strategy Classification Head (3 classes) │ │ + Regression Head (line_scale, edge_tol) │ │ + Preset Embedding (optional) │ └─────────────────────────────────────────────┘ │ ▼ Strategy Prediction { "strategy": "lattice" | "stream" | "lattice_sensitive", "line_scale": 12-40, "edge_tol": 100-500, "confidence": 0.92 } ``` ## Training Data Format ```json { "image_path": "data/images/train/arxiv_2501_page3_table1.png", "source_pdf": "2501_15355.pdf", "page": 3, "bbox": [100, 200, 400, 350], "strategy": "lattice_sensitive", "params": { "line_scale": 15, "edge_tol": 300, "flavor": "lattice" }, "quality_score": 0.92, "fallback_used": false, "preset": "arxiv_scientific", "domain": "scientific" } ``` ## Commands ### Data Collection | Command | Description | |---------|-------------| | `./run.sh collect` | Collect table images from corpus | | `./run.sh split` | Split data into train/eval sets | | `./run.sh stats` | Show dataset statistics | ### GRPO Training | Command | Description | |---------|-------------| | `./run.sh train-full` | Full pipeline: warmup → GRPO → eval | | `./run.sh warmup` | SFT warmup before GRPO | | `./run.sh grpo` | GRPO training with Camelot feedback | | `./run.sh evaluate` | Run evaluation on holdout set | ### Utilities | Command | Description | |---------|-------------| | `./run.sh infer` | Test inference on image | | `./run.sh tensorboard` | Start TensorBoard | | `./run.sh export` | Export model for S05 integration | ## S05 Integration After training, integrate with S05: ```python from create_table_classifier.inference import TableStrategyPredictor predictor = TableStrategyPredictor( model_path="models/table-classifier-final", ) # Predict strategy for table region pred = predictor.predict(region_image) if pred.confidence > 0.8: strategies_to_try = [pred.to_camelot_params()] + fallback_strategies ``` ## GPU Requirements | GPU | Batch Size | Memory | |-----|------------|--------| | RTX 3090 (24GB) | 32 | ~8GB | | RTX 4090 (24GB) | 64 | ~12GB | | A100 (40GB) | 128 | ~20GB | ## Output Structure ``` models/ ├── table-classifier-sft/ # SFT warmup checkpoint │ ├── model.pth │ └── config.json ├── table-classifier-grpo/ # GRPO trained model │ └── attempt_N/ └── table-classifier-final/ # Best model for S05 ├── model.pth ├── config.json └── preset_embeddings.json # Federated Taxonomy mappings ``` ## Monitoring Training logs are saved to `logs/` and optionally to Weights & Biases. ```bash # View training progress ./run.sh logs # TensorBoard ./run.sh tensorboard ``` ## Self-Improvement Cycle The classifier improves through continuous learning: 1. **Extract** tables from 10K PDF corpus 2. **Collect** successful strategies from S05 outputs 3. **Train** GRPO model with execution feedback 4. **Deploy** updated model to S05 5. **Repeat** nightly on scheduler ```bash # Run full self-improvement cycle ./run.sh self-improve --corpus /path/to/10k_pdfs --nights 7 ```
Ver en GitHub