Package: excalibur-py
Excalibur: A web interface to extract tabular data from PDFsExcaliburis a web interface to extract tabular data from PDFs, written inPython 3! It is powered byCamelot.Note:Excalibur only works with text-based PDFs and not scanned documents. (As Tabulaexplains, "If you can click and drag to select text in your table in a PDF viewer, then your PDF is text-based".)Using ExcaliburNote:You need toinstall ghostscriptbefore moving forward.Afterinstalling Excalibur with pip, you need to initialize the metadata database using:$ excalibur initdbAnd then start the webserver using:$ excalibur webserverThat's it! Now you can go tohttp://localhost:5000and start extracting tabular data from your PDFs.Uploada PDF and enter the page numbers you want to extract tables from.Go to each page and select the table by drawing a box around it. (You can choose to skip this step since Excalibur can automatically detect tables on its own. Click on "Autodetect tables" to see what Excalibur sees.)Choose a flavor (Lattice or Stream) from "Advanced".a.Lattice: For tables formed with lines.b.Stream: For tables formed with whitespaces.Click on "View and download data" to see the extracted tables.Select your favorite format (CSV/Excel/JSON/HTML) and click on "Download"!Note:You can also download executables for Windows and Linux from thereleases pageand run them directly!Why Excalibur?Extracting tables from PDFs is hard. A simple copy-and-paste from a PDF into an Excel doesn't preserve table structure.Excalibur makes PDF table extraction very easy, by automatically detecting tables in PDFs and letting you save them into CSVs and Excel files.Excalibur usesCamelotunder the hood, which gives you additional settings to tweak table extraction and get the best results. You can see how it performs better than other open-source tools and librariesin this comparison.You can save table extractionsettings(like table areas) for a PDF once, and apply them on new PDFs to extract tables with similar structures.You get complete control over your data. All file storage and processing happens on your own local or remote machine.Excalibur can be configured with MySQL and Celery for parallel and distributed workloads. By default, sqlite and multiprocessing are used for sequential workloads.InstallationUsing pipAfter installingghostscript, which is one of the requirements for Camelot (Seeinstall instructions), you can simply use pip to install Excalibur:$ pip install excalibur-pyFrom the source codeAfter installing ghostscript, clone the repo using:$ git clone https://www.github.com/camelot-dev/excaliburand install Excalibur using pip:$ cd excalibur
$ pip install .DocumentationFantastic documentation is available athttp://excalibur-py.readthedocs.io/.DevelopmentTheContributor's Guidehas detailed information about contributing code, documentation, tests and more. We've included some basic information in this README.Source codeYou can check the latest sources with:$ git clone https://www.github.com/camelot-dev/excaliburSetting up a development environmentYou can install the development dependencies easily, using pip:$ pip install excalibur-py[dev]Testing (soon)After installation, you can run tests using:$ python setup.py testVersioningExcalibur usesSemantic Versioning. For the available versions, see the tags on this repository. For the changelog, you can check outHISTORY.md.LicenseThis project is licensed under the MIT License, see theLICENSEfile for details.Support the developmentYou can support our work on Excalibur with a one-time or monthly donationon OpenCollective. Organizations who use Excalibur can also sponsor the project for an acknowledgement onour official siteand this README.Special thanks to all the users and organizations that support Excalibur!