|
Download README.md from docling-project/TableFormerV2: direct link, hf CLI and curl.
- Browser
- Download file 5.27 kB
-
https://huggingface.co/docling-project/TableFormerV2/resolve/main/README.md
- Command line
-
hf download hf://docling-project/TableFormerV2/README.md
-
curl -L -o README.md https://huggingface.co/docling-project/TableFormerV2/resolve/main/README.md
5.27 kB
| license: apache-2.0 | |
| library_name: docling | |
| pipeline_tag: image-to-text | |
| tags: | |
| - docling | |
| - table-structure-recognition | |
| - document-conversion | |
| - tables | |
| - preview | |
| # TableFormerV2 | |
| > [!WARNING] | |
| > **Preview model.** TableFormerV2 is a preview release. Its weights, outputs, and | |
| > integration options can change in future releases without notice. The default | |
| > table structure model in Docling is still | |
| > [TableFormer V1](https://huggingface.co/docling-project/docling-models). | |
| TableFormerV2 is a table structure recognition model for | |
| [Docling](https://github.com/docling-project/docling). It takes an image of a | |
| table and predicts its structure as an | |
| [OTSL](https://arxiv.org/abs/2305.03393) token sequence, together with a | |
| bounding box for each cell. Docling then maps the cells back to the text of the | |
| document to build a `TableItem` in the `DoclingDocument`. | |
| ## Model details | |
| | | | | |
| |---|---| | |
| | **Developed by** | IBM Research, for the Docling project | | |
| | **Model type** | Image-to-sequence (table structure + cell boxes) | | |
| | **Parameters** | ~52M (FP32) | | |
| | **Input** | Table crop, resized to 448×448 | | |
| | **Output** | OTSL structure tokens and one bounding box per cell | | |
| | **License** | Apache-2.0 | | |
| | **Status** | Preview | | |
| ### Architecture | |
| - **Image encoder:** EfficientNetV2-S backbone with Squeeze-and-Excitation. | |
| - **Spatial mixer:** depthwise separable convolutions (no self-attention in the | |
| encoder). | |
| - **Structure decoder:** cache-aware Transformer decoder with cross-attention to | |
| the image features. | |
| - **Bounding-box head:** multi-layer attention decoder that predicts one box per | |
| cell. | |
| The design is lightweight. It targets fast CPU inference and GPU batch | |
| inference. | |
| The model implementation is in | |
| [`docling-ibm-models`](https://github.com/docling-project/docling-ibm-models) | |
| (`docling_ibm_models.tableformer_v2`). | |
| ## Usage with Docling | |
| Install Docling: | |
| ```bash | |
| pip install docling | |
| ``` | |
| Docling downloads the weights from this repository automatically the first time | |
| you use the model. To download them before you run a conversion (for example, | |
| for offline use), run: | |
| ```bash | |
| docling-tools models download tableformerv2 | |
| ``` | |
| ### Option 1: Use the preset | |
| The fastest way to enable TableFormerV2 is to select it by name. | |
| **CLI:** | |
| ```bash | |
| docling report.pdf --table-structure-engine docling_tableformer_v2 | |
| ``` | |
| **Docling Serve / Service Client:** set the `tableformer_v2` preset. | |
| ```python | |
| from docling.datamodel.service.options import ConvertDocumentsOptions | |
| from docling.service_client import DoclingServiceClient | |
| options = ConvertDocumentsOptions(table_structure_preset="tableformer_v2") | |
| with DoclingServiceClient(url="http://localhost:5001") as client: | |
| result = client.convert(source="report.pdf", options=options) | |
| print(result.document.export_to_markdown()) | |
| ``` | |
| ### Option 2: Set the full pipeline options | |
| Use the Python SDK when you need full control over the pipeline. Set | |
| `table_structure_options` to `TableStructureV2Options`: | |
| ```python | |
| from docling.datamodel.accelerator_options import AcceleratorOptions | |
| from docling.datamodel.base_models import InputFormat | |
| from docling.datamodel.pipeline_options import ( | |
| PdfPipelineOptions, | |
| TableStructureV2Options, | |
| ) | |
| from docling.document_converter import DocumentConverter, PdfFormatOption | |
| pipeline_options = PdfPipelineOptions( | |
| do_table_structure=True, | |
| table_structure_options=TableStructureV2Options( | |
| # True: match the predicted cells to the text cells of the PDF. | |
| # False: use the cells predicted by the model and ignore the PDF cells. | |
| do_cell_matching=True, | |
| ), | |
| accelerator_options=AcceleratorOptions(device="auto", num_threads=8), | |
| ) | |
| converter = DocumentConverter( | |
| format_options={ | |
| InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options), | |
| } | |
| ) | |
| result = converter.convert("report.pdf") | |
| for table in result.document.tables: | |
| print(table.export_to_dataframe()) | |
| ``` | |
| To load pre-downloaded weights, set `artifacts_path` on the pipeline options: | |
| ```python | |
| pipeline_options = PdfPipelineOptions( | |
| artifacts_path="/path/to/models", # contains docling-project--TableFormerV2/ | |
| table_structure_options=TableStructureV2Options(), | |
| ) | |
| ``` | |
| ### Options | |
| | Option | Default | Description | | |
| |---|---|---| | |
| | `do_cell_matching` | `True` | Match the predicted cells to the PDF text cells. Set to `False` if PDF cells span more than one column, because this can break the table output. | | |
| ## Limitations | |
| - This is a **preview** model. Quality and behavior can change between | |
| releases. | |
| - On Apple Silicon, the model runs on CPU. Docling does not use MPS for this | |
| model. | |
| - The model sees only the table crop. Errors in the layout model (missed or | |
| wrongly cropped tables) propagate to the table structure. | |
| ## License | |
| This model is released under the | |
| [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). | |
| ## Citation | |
| If you use TableFormerV2, please cite Docling: | |
| ```bibtex | |
| @misc{Docling, | |
| author = {Docling Team}, | |
| title = {Docling: An Efficient Open-Source Toolkit for AI-driven Document Conversion}, | |
| url = {https://arxiv.org/abs/2501.17887}, | |
| eprint = {2501.17887}, | |
| archivePrefix = {arXiv}, | |
| doi = {10.48550/arXiv.2501.17887}, | |
| year = {2025} | |
| } | |
| ``` | |