# Tree Structure - Table Extraction Fonduer has been successfully extended to perform information extraction from richly formatted data such as tables. A crucial step in this process is the construction of the hierarchical tree of context objects such as text blocks, figures, tables, etc. The system currently uses PDF to HTML conversion provided by Adobe Acrobat converter. Adobe Acrobat converter is not an open source tool and this can be very inconvenient for Fonduer users. We therefore need to build our own module as replacement to Adobe Acrobat. Several open source tools are available for pdf to html conversion but these tools do not preserve the cell structure in a table. Our goal in this project is to develop a tool that extracts text, figures and tables in a pdf document and maintains the structure of the document using a tree data structure. This project is using the table-extraction tool (https://github.com/xiao-cheng/table-extraction). ## Dependencies ```pip install -r requirements.txt``` ## Environment variables First, set environment variables. The ```DATAPATH``` folder should contain the pdf files that need to be processed. ```source set_env.sh``` ## Tutorial The ```table-extraction/tutorials/``` folder contains a notebook ```table-extraction-demo.ipynb```. In this demo we detail the different steps of the table extraction tool and display some examples of table detection results for paleo papers. However, to extract tables for new documents, the user should directly use the command line tool detailed in the next section. ## Command Line Usage To use the tool via command line, run: ```source set_env.sh``` ```python table-extraction/ml/extract_tables.py [-h]``` ``` usage: extract_tables.py [-h] [--mode MODE] [--train-pdf TRAIN_PDF] [--test-pdf TEST_PDF] [--gt-train GT_TRAIN] [--gt-test GT_TEST] [--model-path MODEL_PATH] [--iou-thresh IOU_THRESH] Script to extract tables bounding boxes from PDF files using a machine learning approach. if model.pkl is saved in the model-path, the pickled model will be used for prediction. Otherwise the model will be retrained. If --mode is test (by default), the script will create a .bbox file containing the tables for the pdf documents listed in the file --test-pdf. If --mode is dev, the script will also extract ground truth labels fot the test data and compute some statistics. To run the script on new documents, specify the path to the list of pdf to analyze using the argument --test-pdf. Those files must be saved in the DATAPATH folder. optional arguments: -h, --help show this help message and exit --mode MODE usage mode dev or test, default is test --train-pdf TRAIN_PDF list of pdf file names used for training. Those files must be saved in the DATAPATH folder (cf set_env.sh) must be saved in the DATAPATH folder (cf set_env.sh) --test-pdf TEST_PDF list of pdf file names used for testing. Those files must be saved in the DATAPATH folder (cf set_env.sh) --gt-train GT_TRAIN ground truth train tables --gt-test GT_TEST ground truth test tables --model-path MODEL_PATH pretrained model --iou-thresh IOU_THRESH intersection over union threshold to remove duplicate tables ``` Each document must be saved in the ```DATAPATH``` folder. The script will create a ``` .bbox``` file where each row contains tables coordinates of the corresponding row document in the --test_pdf file. The bounding boxes are stored in the format (page_num, page_width, page_height, top, left, bottom, right) and are separated with ";". ## Evaluation We provide an evaluation code to compute recall, precision and F1 score at the character level. ```python table-extraction/evaluation/char_level_evaluation.py [-h] pdf_files extracted_bbox gt_bbox``` ``` usage: char_level_evaluation.py [-h] pdf_files extracted_bbox gt_bbox Computes scores for the table localization task. Returns Recall and Precision for the sub-objects level (characters in text). If DISPLAY=TRUE, display GT in Red and extracted bboxes in Blue positional arguments: pdf_files list of paths of PDF file to process extracted_bbox extracting bounding boxes (one line per pdf file) gt_bbox ground truth bounding boxes (one line per pdf file) optional arguments: -h, --help show this help message and exit ```