| --- |
| license: mit |
| pipeline_tag: object-detection |
| tags: |
| - table-detection |
| - spreadsheets |
| - object-detection |
| - faster-rcnn |
| - pytorch |
| --- |
| |
| # ExcelTableCNN: VEnron2 table detector |
|
|
| A Faster R-CNN table-boundary detector for spreadsheets, from |
| [ExcelTableCNN](https://github.com/Flagro/ExcelTableCNN), a license-clean |
| reimplementation of the TableSense approach. Given a sheet's cell grid it |
| predicts a bounding box (cell range) for each table, with PBR boundary snapping |
| and a grid-context backbone. |
|
|
| - Input: 30 per-cell feature channels, built by the package from `.xls`/`.xlsx`. |
| - Output: table bounding boxes as cell ranges, each with a confidence score. |
| - Weights: `final.pt` (about 201 MB), trained 160 epochs on the full VEnron2 set. |
|
|
| ## Metrics |
|
|
| Evaluated on the held-out VEnron2 test split (197 sheets, 342 tables) at score |
| threshold 0.5, using the strict Error-of-Boundary metric (EoB-0 = cell-exact, |
| EoB-2 = within 2 cells): |
|
|
| | Metric | Precision | Recall | |
| |---|---|---| |
| | EoB-0 (exact) | 47.7% | 48.2% | |
| | EoB-2 (within 2 cells) | 66.5% | 67.3% | |
|
|
| The reloaded checkpoint reproduces these numbers exactly (RoI pooling scale |
| pinned to 1.0, see PR #8). For reference, the TableSense paper reports EoB-2 |
| precision 86.5% / recall 91.3%, trained on about 25x more hand-labeled sheets. |
|
|
| ## Usage |
|
|
| Install the package (it handles featurization and decoding): |
|
|
| ```bash |
| pip install git+https://github.com/Flagro/ExcelTableCNN.git |
| ``` |
|
|
| Download the weights and detect tables from the command line: |
|
|
| ```bash |
| huggingface-cli download flagro/exceltablecnn-venron2 final.pt --local-dir . |
| excel-table-cnn-detect report.xls --weights final.pt |
| # Sheet1!B2:H45 score=0.973 |
| ``` |
|
|
| Or from Python: |
|
|
| ```python |
| from huggingface_hub import hf_hub_download |
| from excel_table_cnn import load_checkpoint |
| |
| path = hf_hub_download("flagro/exceltablecnn-venron2", "final.pt") |
| model = load_checkpoint(path, device="cpu") # or "cuda" |
| ``` |
|
|
| ## Training |
|
|
| - Data: VEnron2, 1,288 training sheets, via the ExcelTableCNN pipeline. |
| - Schedule: 160 epochs, batch size 1, SGD (lr 0.005, momentum 0.9, weight decay |
| 5e-4), 100-step warmup, constant LR, mixed precision. |
| - Featurization caps: default 2,048 x 512 cells. Seed 42. |
| - Hardware: single NVIDIA T4 (Kaggle), about 4 hours. |
| - Architecture: 30-channel input, grid-context backbone (stride 1), Faster |
| R-CNN detection head, PBR boundary-snapping head, 2 classes (table vs |
| background). |
| - Code: excel-table-cnn 0.3.0, commit `0ed4205`. |
|
|
| ## Limitations |
|
|
| - Trained only on VEnron2 (Enron-derived financial and operational |
| spreadsheets); expect lower accuracy on very different domains or layouts. |
| - Cell-exact (EoB-0) detection is still under 50%; boundaries are often off by 1 |
| to 2 cells, which is why EoB-2 is much higher. Use EoB-2 for downstream |
| extraction that tolerates small boundary error. |
| - Sheets larger than 2,048 x 512 cells are clipped during featurization. |
|
|
| ## License and data |
|
|
| Code and weights are MIT-licensed (see the |
| [repository](https://github.com/Flagro/ExcelTableCNN)). The training data is the |
| public VEnron2 corpus, derived from the Enron email dataset; confirm its terms |
| permit your intended redistribution or use. |
|
|
| ## Citation |
|
|
| Built on the method from TableSense (Dong et al., AAAI 2019). Please cite the |
| original paper for the approach and link this repository for the implementation. |
|
|