AE3-TL

Page-level table extraction that gets more tables exactly right. AE3-TL finds every table on a PDF page and rebuilds it cell for cell: rows, columns, merged cells, headers and text, with each caption and footer attached to the right table.

It is the new state of the art on the PubTables-v2 page-level benchmark, first on all six metrics. At 32M parameters it runs on a single GPU or a CPU through ONNX, and it is free and open under Apache 2.0, including for commercial use.

Paper Β· Code

73.7% of tables reproduced exactly vs 64.5% for POTATR, the previous best, and 35.2% for Gemini 3.1 Pro
26% fewer tables with any error than POTATR, across all 9,047 test tables
59% vs 40% exact on the densest pages the bigger the table, the bigger the lead
80,808 pages an hour on one A10 GPU 1.73Γ— POTATR on the same GPU; about $30 per million pages

Tables extracted exactly right


What it does

Input: a rendered PDF page, plus the page's words with their positions (from the PDF's text layer).

Output: every table on the page, each with:

  • its grid of cells, including cells that span several rows or columns
  • column headers and row structure
  • the text of every cell
  • its caption and footer, linked to the right table even when a page has several

AE3-TL reads structure from the image and text from the PDF's own words, so the text in each cell is exactly what the document contains, with no OCR errors. It is built for digital PDFs: reports, filings, papers and statements that have a text layer.


Results

Full method and analysis are in the paper. All scores are on the PubTables-v2 Single Pages test set (7,680 pages, 9,047 tables), with the dataset's own words, scored by Kensho's unchanged POTATR scorer v0.2.0. The other rows come from the POTATR paper (Smock et al., DAS 2026).

To make the comparison like for like, we re-ran POTATR from its released weights through the same pipeline. Our re-run matches the paper's POTATR + DT row to within 0.0022 on every metric.

At a glance

AE3-TL POTATR (re-run) Best MLLM (Gemini 3.1 Pro)
Exact match, content 0.737 0.645 0.352
Exact match, topology 0.796 0.701 0.635
GriTS-Con 0.977 0.965 0.942
TEDS 0.965 0.952 0.925
Footer text F1 0.985 0.979 β€”
Caption text F1 0.977 0.981 0.977
Pages per hour, one GPU 80,808 46,753 393 (API)
Cost per million pages $30 $52 $15,000

Gemini reads the page image only, as in the paper; AE3-TL and POTATR also use the page's words. The cost figures use the paper's pricing: $2.45 per GPU-hour, and list API prices for the MLLMs.

The denser the page, the bigger the lead

On simple pages AE3-TL and POTATR are close. As tables grow, POTATR's exact-match rate falls away faster: on pages with more than 250 cells, AE3-TL gets 59% of tables exactly right against 40%, a 1.48Γ— lead.

The denser the page, the bigger the lead

Cells per page Tables Exact match, POTATR Exact match, AE3-TL Gain
1–20 631 0.854 0.865 +1.1
21–40 1,313 0.828 0.848 +2.0
41–70 1,776 0.735 0.797 +6.1
71–100 1,478 0.664 0.746 +8.2
101–150 1,631 0.553 0.649 +9.6
151–200 1,086 0.488 0.647 +15.9
201–250 530 0.464 0.602 +13.8
More than 250 602 0.400 0.591 +19.1

Gain in percentage points of exact match (content). The per-bin figures come from an earlier scoring run of the same weights, before a final fix to word handling; the overall figures elsewhere on this page are from the final run.

Density bins: GriTS-Con and TEDS
Cells per page Pages Tables GriTS-Con, POTATR GriTS-Con, AE3-TL TEDS, POTATR TEDS, AE3-TL
1–20 625 631 0.9617 0.9656 0.9579 0.9600
21–40 1,243 1,313 0.9734 0.9747 0.9662 0.9664
41–70 1,570 1,776 0.9717 0.9790 0.9589 0.9696
71–100 1,232 1,478 0.9722 0.9817 0.9555 0.9686
101–150 1,329 1,631 0.9663 0.9792 0.9480 0.9672
151–200 848 1,086 0.9644 0.9764 0.9422 0.9641
201–250 401 530 0.9650 0.9788 0.9411 0.9659
More than 250 432 602 0.9500 0.9696 0.9188 0.9535

AE3-TL leads in every bin on every metric.

Statistical significance

AE3-TL minus our POTATR re-run, on the same pages. The 95% intervals come from a paired page bootstrap (2,000 resamples, seed 20261028). Every interval is above zero.

GriTS-Top GriTS-Con Exact (topology) Exact (content) TEDS-S TEDS
+0.0114 [+0.0098, +0.0131] +0.0122 [+0.0104, +0.0140] +0.0948 [+0.0860, +0.1030] +0.0920 [+0.0836, +0.0999] +0.0126 [+0.0107, +0.0147] +0.0138 [+0.0116, +0.0160]
Full benchmark table: all models (paper Table 2)
Model GriTS-Top GriTS-Con Acc-Top Acc-Con TEDS-S TEDS
SmolDocling-256M 0.2502 0.2177 0.2800 0.0298 0.5980 0.5250
GraniteDocling-258M 0.7252 0.6670 0.3794 0.0829 0.6685 0.6155
Qwen2.5-VL-3b 0.4672 0.3803 0.3651 0.0619 0.2859 0.2632
Granite-Vision-3.2-2b 0.8015 0.7480 0.4245 0.0331 0.8665 0.8092
DeepSeek-OCR 0.8629 0.8207 0.6184 0.1671 0.7996 0.7639
DeepSeek-OCR 2 0.8839 0.8386 0.5258 0.1120 0.7688 0.7263
dots.ocr 0.9241 0.8991 0.6425 0.1872 0.9168 0.8743
Claude Opus 4.6 0.9146 0.9106 0.4934 0.2713 0.9073 0.8945
GPT-5.4 0.9208 0.9102 0.5461 0.2074 0.9084 0.8874
Gemini 3.1 Pro 0.9500 0.9418 0.6348 0.3524 0.9392 0.9250
POTATR + EasyOCR 0.9555 0.7819 0.6595 0.0022 0.9468 0.8162
POTATR + PaddleOCR 0.9607 0.8758 0.6915 0.0074 0.9528 0.8759
POTATR + docTR 0.9601 0.8799 0.6707 0.0683 0.9500 0.8952
POTATR + DT 0.9665 0.9636 0.6992 0.6454 0.9565 0.9502
POTATR + DT (our re-run) ‑ 0.9674 0.9647 0.7013 0.6447 0.9577 0.9516
AE3-TL + DT ‑ 0.9788 0.9769 0.7962 0.7367 0.9703 0.9654

‑ Our runs. DT = the dataset's own words. Image-only models read the page image without the document's words, as in the paper.

Caption and footer text (paper Table 3, plus a footer column)

Character-level LCS F1, with precision (P) and recall (R).

Model Caption F1 Caption P Caption R Footer F1
Claude Opus 4.6 0.9611 0.9866 0.9370 β€”
GPT-5.4 0.9658 0.9743 0.9575 β€”
Gemini 3.1 Pro 0.9774 0.9882 0.9669 β€”
POTATR + EasyOCR 0.9789 0.9830 0.9749 β€”
POTATR + PaddleOCR 0.9764 0.9799 0.9728 β€”
POTATR + docTR 0.9786 0.9828 0.9744 β€”
POTATR + DT 0.9781 0.9817 0.9746 β€”
POTATR + DT (our re-run) ‑ 0.9807 0.9824 0.9790 0.9793
AE3-TL + DT ‑ 0.9766 0.9756 0.9776 0.9849

‑ Our runs, using the scorer's @con table key. The paper does not publish footer scores.

Speed and cost (paper Table 4)
Model Parameters Pages per hour Cost per 1M pages
Claude Opus 4.6 β€” 244 $36,680
GPT-5.4 β€” 326 $16,800
Gemini 3.1 Pro β€” 393 $15,000
Qwen2.5-VL-3b 3B 386 $6,336
dots.ocr 3B 572 $4,281
DeepSeek-OCR 2 3B 1,201 $2,038
SmolDocling-256M 256M 1,247 $1,963
GraniteDocling-258M 258M 1,847 $1,325
POTATR (paper, A10G) 29M 52,031 $47
POTATR (our re-run, A10) ‑ 29M 46,753 $52
AE3-TL (A10) ‑ 32M 80,808 $30

‑ One NVIDIA A10, batch size 1, timed at Kensho's boundary: model forward pass plus post-processing, file reading excluded. Priced at the paper's $2.45 per GPU-hour. The paper measured POTATR on an A10G, so we compare against our own A10 re-run.


Model details

Architecture D-FINE-L detector with an HGNetv2-B4 backbone, plus a relation head that links captions and footers to their tables
Parameters 31,638,457
Initialisation ImageNet backbone only: no pretrained detector and no pretrained table model (POTATR starts from TATR-v1.1-Pub)
Training 28 crop-level epochs on PubTables-1M, then 11 page-level epochs on PubTables-v2 Single Pages (10 for structure, 1 for caption and footer linking), on 8Γ— H100
Release v3, epoch 1, EMA weights
Format ONNX opset 17, fp32, as two graphs: the page model and the relation head

Files

File sha256
Checkpoint 47000f3b785b65c4685e283e266ed67be0eccc2018abef8b183e5f903e34f48c
Page model (ONNX) 91f5183a8b4a2df2afc80992c89cc6df30456bb6d5a7dfa19d2cb26414cfdcff
Relation head (ONNX) 5867fa72915d47b03942b94f0ab4d73946a7543790e95560882536e9f94011c7

How to use

AE3-TL runs in three steps:

  1. Page model. Detects tables, rows, columns, spanning cells and headers.
  2. Relation head. Decides which caption and footer belong to which table.
  3. Post-processing (included in the kit). Turns the detections and the page's words into finished tables with cells, spans, text, captions and footers.

USAGE.md walks through the full pipeline, including the "For best results" settings.

Model inputs and outputs

Graph Inputs Outputs
Page model images: float32 [batch, 3, 768, 768], RGB scaled to 0–1 logits [batch, 300, 16], boxes [batch, 300, 4] (normalised cx, cy, w, h), query_embeddings, encoder_indices
Relation head query_embeddings, pairs [n, 2] edge_logits [n]

Running the page model

import numpy as np
import onnxruntime as ort

session = ort.InferenceSession(
    "ae3-tl-page.onnx",
    providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
)

# One page rendered to RGB, prepared as described in USAGE.md:
# float32, shape [1, 3, 768, 768], values in 0..1
image = np.zeros((1, 3, 768, 768), dtype=np.float32)

names = [o.name for o in session.get_outputs()]
outputs = dict(zip(names, session.run(None, {"images": image})))

print(outputs["logits"].shape)  # (1, 300, 16)
print(outputs["boxes"].shape)   # (1, 300, 4)

Verify your download

sha256sum ae3-tl-page.onnx ae3-tl-relation.onnx

The hashes should match the table above.


Intended use and limitations

Good for: extracting tables at scale from digital PDFs (financial reports, filings, research papers, statements) where the text layer is available, including privately on your own hardware.

Know before you use it:

  • Digital PDFs only, as evaluated. All results use the document's own words. Scanned pages need OCR first. The POTATR + OCR rows above show how much OCR errors can cost on this benchmark; we have not yet measured AE3-TL with OCR.
  • Trained and tested on scientific articles. PubTables-v2 is built from PubMed Central papers. We expect the gains to carry over to financial and business documents, but have not yet benchmarked them.
  • Captions are on a par, not ahead. Caption text F1 is 0.977 against POTATR's 0.981. Footer text F1 is higher (0.985 against 0.979).
  • One training run. The confidence intervals cover variation across test pages, not across training seeds.
  • Check before relying on outputs. Like any extraction model it makes mistakes, more often on very dense tables. Review the output before relying on it for decisions.

Licence and credits

AE3-TL's weights and code are released under the Apache License 2.0. You can use, modify and redistribute them, including commercially, provided you keep the licence and the notices below.

AE3-TL builds on the following open work. Thank you to their authors.

Component Licence
D-FINE and RT-DETR (detector architecture) Apache-2.0
Table Transformer (post-processing) MIT
Kensho's extract_text_inside_bbox and extract_text_from_spans, copied unchanged from POTATR MIT
PubTables-1M and PubTables-v2 (training and evaluation data) CDLA-Permissive-2.0

Citation

If you use AE3-TL, please cite the paper:

@misc{khan2026ae3tl,
  title        = {AE3-TL: Faster and More Exact Page-Level Table Extraction with a Real-Time Detection Transformer},
  author       = {Khan, Usman},
  year         = {2026},
  publisher    = {APEXE3},
  howpublished = {\url{https://github.com/apexe3/ae3-table-extract/blob/main/AE3-TL_2026.pdf}}
}

AE3-TL is evaluated against, and builds on:

  • Peng et al. D-FINE: Redefine Regression Task in DETRs as Fine-grained Distribution Refinement. ICLR 2025.
  • Smock et al. PubTables-1M: Towards Comprehensive Table Extraction From Unstructured Documents. CVPR 2022.
  • Smock et al. PubTables-v2. 2025.
  • Smock et al. POTATR. DAS 2026.

Contact

Built by APEXE3. For questions, help deploying AE3-TL privately at scale, or a hosted API, contact labs@apexe3.com.

Model v3, epoch 1, EMA weights. Card updated November 2026.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Datasets used to train APEXE3HQ/ae3-tl