Simple ViT and Evolving Harness for Explainable Text Forgery Detection
π 3rd Place Solution for the ACM MM 2026 GenText-Forensics Challenge β detecting, localizing, and explaining text-centric document forgeries.
SEED is a modular forgery analysis pipeline with three stages:
| Stage | Component | Description |
|---|---|---|
| 1οΈβ£ | Synthetic Data | Similarity-guided forgery generation across 5 manipulation types, with paired (clean, forged) sampling |
| 2οΈβ£ | ViT Detector | DINOv3 ViT-L/16 + LoRA adaptation + EoMT mask head β unified detection & localization |
| 3οΈβ£ | Meta-Harness | Evolving MLLM harness that converts detector outputs into structured forensic reports |
.
βββ base_trainer.py # Training utilities & metrics
βββ cfg.py # Runtime configuration
βββ ds.py # Datasets & dataloaders
βββ main.py # Train / validation / inference entry point
βββ model/
β βββ eomt_sep_query.py # Main detector (DINOv3 + LoRA + EoMT)
β βββ lora.py # Single-expert LoRA modules
β βββ mask_classification_loss.py # Mask2Former-style loss
β βββ scale_block.py # ConvTranspose upscaling block
βββ meta_harness/
β βββ test_submission.py # Generate challenge-format reports
β βββ precompute_submission_artifacts.py
β βββ harness.py # Report generation base class
β βββ llm_clients.py # OpenAI-compatible LLM client
β βββ overlay.py # Mask visualization helpers
β βββ report_utils.py # Report formatting utilities
β βββ template_report_boxreasons_coordspanrepair.py
β βββ config.yaml # LLM API configuration
βββ TDOC/ # Auxiliary training & generation modules
# Create a Python 3.10 environment, then install dependencies
pip install -r requirements.txt
| Dataset | Description | Link |
|---|---|---|
| RealText-V2 | Original challenge dataset | vankey/RealText-V2 |
| RealText-V2-Syn25k | Our synthetic data | Jason37437/RealText-V2-Syn25k |
| Cross-domain test sets | T-SROIE, OSTF, TPIC-13, RTM | Jason37437/Doc-Protocol-Data |
| Model Checkpoint | SEED (LoRA rank-1, DINOv3 ViT-L) | Jason37437/SEED / Google Drive |
# 1. Edit cfg.py β mode='train'
# 2. Set your data paths and GPU count
python main.py
# 1. Edit cfg.py β mode='val', eval_mode=['loc','det']
python main.py
The meta_harness/ pipeline converts detector outputs β structured Markdown forensic reports.
# π Set your OpenAI-compatible API key
export LINKAPI_API_KEY="your-api-key-here"
# πΌοΈ Step 1: Precompute overlays, bounding boxes, data URIs
python meta_harness/precompute_submission_artifacts.py
# π Step 2: Generate reports via MLLM
python meta_harness/test_submission.py
9 commits
Python
100.0%
Simple ViT and Evolving Harness for Explainable Text Forgery Detection
π 3rd Place Solution for the ACM MM 2026 GenText-Forensics Challenge β detecting, localizing, and explaining text-centric document forgeries.
SEED is a modular forgery analysis pipeline with three stages:
| Stage | Component | Description |
|---|---|---|
| 1οΈβ£ | Synthetic Data | Similarity-guided forgery generation across 5 manipulation types, with paired (clean, forged) sampling |
| 2οΈβ£ | ViT Detector | DINOv3 ViT-L/16 + LoRA adaptation + EoMT mask head β unified detection & localization |
| 3οΈβ£ | Meta-Harness | Evolving MLLM harness that converts detector outputs into structured forensic reports |
.
βββ base_trainer.py # Training utilities & metrics
βββ cfg.py # Runtime configuration
βββ ds.py # Datasets & dataloaders
βββ main.py # Train / validation / inference entry point
βββ model/
β βββ eomt_sep_query.py # Main detector (DINOv3 + LoRA + EoMT)
β βββ lora.py # Single-expert LoRA modules
β βββ mask_classification_loss.py # Mask2Former-style loss
β βββ scale_block.py # ConvTranspose upscaling block
βββ meta_harness/
β βββ test_submission.py # Generate challenge-format reports
β βββ precompute_submission_artifacts.py
β βββ harness.py # Report generation base class
β βββ llm_clients.py # OpenAI-compatible LLM client
β βββ overlay.py # Mask visualization helpers
β βββ report_utils.py # Report formatting utilities
β βββ template_report_boxreasons_coordspanrepair.py
β βββ config.yaml # LLM API configuration
βββ TDOC/ # Auxiliary training & generation modules
# Create a Python 3.10 environment, then install dependencies
pip install -r requirements.txt
| Dataset | Description | Link |
|---|---|---|
| RealText-V2 | Original challenge dataset | vankey/RealText-V2 |
| RealText-V2-Syn25k | Our synthetic data | Jason37437/RealText-V2-Syn25k |
| Cross-domain test sets | T-SROIE, OSTF, TPIC-13, RTM | Jason37437/Doc-Protocol-Data |
| Model Checkpoint | SEED (LoRA rank-1, DINOv3 ViT-L) | Jason37437/SEED / Google Drive |
# 1. Edit cfg.py β mode='train'
# 2. Set your data paths and GPU count
python main.py
# 1. Edit cfg.py β mode='val', eval_mode=['loc','det']
python main.py
The meta_harness/ pipeline converts detector outputs β structured Markdown forensic reports.
# π Set your OpenAI-compatible API key
export LINKAPI_API_KEY="your-api-key-here"
# πΌοΈ Step 1: Precompute overlays, bounding boxes, data URIs
python meta_harness/precompute_submission_artifacts.py
# π Step 2: Generate reports via MLLM
python meta_harness/test_submission.py
9 commits
Python
100.0%