Skip to main content

A package to use AWS Textract services.

Project description

Textractor

Tests Documentation PyPI version Downloads Code style: black

Textractor is a python package created to seamlessly work with Amazon Textract a document intelligence service offering text recognition, table extraction, form processing, and much more. Whether you are making a one-off script or a complex distributed document processing pipeline, Textractor makes it easy to use Textract.

If you are looking for the other amazon-textract-* packages, you can find them using the links below:

Installation

Textractor is available on PyPI and can be installed with pip install amazon-textract-textractor. By default this will install the minimal version of Textractor which is suitable for lambda execution. The following extras can be used to add features:

  • pandas (pip install "amazon-textract-textractor[pandas]") installs pandas which is used to enable DataFrame and CSV exports.
  • pdfium (pip install amazon-textract-textractor[pdfium]) includes pypdfium2 and is the recommended way to enable PDF rasterization in Textractor. Note that this is not necessary to call Textract with a PDF file.
  • pdf (pip install amazon-textract-textractor[pdf]) includes pdf2image and is an additional way to enable PDF rasterization in Textractor. Note that this is not necessary to call Textract with a PDF file.
  • torch (pip install "amazon-textract-textractor[torch]") includes sentence_transformers for better word search and matching. This will work on CPU but be noticeably slower than non-machine learning based approaches.
  • dev (pip install "amazon-textract-textractor[dev]") includes all the dependencies above and everything else needed to test the code.

You can pick several extras by separating the labels with commas like this pip install "amazon-textract-textractor[pdf,torch]".

Documentation

Generated documentation for the latest released version can be accessed here: aws-samples.github.io/amazon-textract-textractor/

Examples

While a collection of simplistic examples is presented here, the documentation has a much larger collection of examples with specific case studies that will help you get started.

Setup

These two lines are all you need to use Textract. The Textractor instance can be reused across multiple requests for both synchronous and asynchronous requests.

from textractor import Textractor

extractor = Textractor(profile_name="default")

Text recognition

# file_source can be an image, list of images, bytes or S3 path
document = extractor.detect_document_text(file_source="tests/fixtures/single-page-1.png")
print(document.lines)
#[Textractor Test, Document, Page (1), Key - Values, Name of package: Textractor, Date : 08/14/2022, Table 1, Cell 1, Cell 2, Cell 4, Cell 5, Cell 6, Cell 7, Cell 8, Cell 9, Cell 10, Cell 11, Cell 12, Cell 13, Cell 14, Cell 15, Selection Element, Selected Checkbox, Un-Selected Checkbox]

Table extraction

from textractor.data.constants import TextractFeatures

document = extractor.analyze_document(
	file_source="tests/fixtures/form.png",
	features=[TextractFeatures.TABLES]
)
# Saves the table in an excel document for further processing
document.tables[0].to_excel("output.xlsx")

Form extraction

from textractor.data.constants import TextractFeatures

document = extractor.analyze_document(
	file_source="tests/fixtures/form.png",
	features=[TextractFeatures.FORMS]
)
# Use document.get() to search for a key with fuzzy matching
document.get("email")
# [E-mail Address : johndoe@gmail.com]

Analyze ID

document = extractor.analyze_id(file_source="tests/fixtures/fake_id.png")
print(document.identity_documents[0].get("FIRST_NAME"))
# 'MARIA'

Receipt processing (Analyze Expense)

document = extractor.analyze_expense(file_source="tests/fixtures/receipt.jpg")
print(document.expense_documents[0].summary_fields.get("TOTAL")[0].text)
# '$1810.46'

If your use case was not covered here or if you are looking for asynchronous usage examples, see our collection of examples.

CLI

Textractor also comes with the textractor script, which supports calling, printing and overlaying directly in the terminal.

textractor analyze-document tests/fixtures/amzn_q2.png output.json --features TABLES --overlay TABLES

overlay_example

See the documentation for more examples.

Tests

The package comes with tests that call the production Textract APIs. Running the tests will incur charges to your AWS account.

Acknowledgements

This library was made possible by the work of Srividhya Radhakrishna (@srividh-r).

Contributing

See CONTRIBUTING.md

Citing

Textractor can be cited using:

@software{amazontextractor,
  author = {Belval, Edouard and Delteil, Thomas and Schade, Martin and Radhakrishna, Srividhya},
  title = {{Amazon Textractor}},
  url = {https://github.com/aws-samples/amazon-textract-textractor},
  version = {1.9.2},
  year = {2025}
}

Or using the CITATION.cff file.

License

This library is licensed under the Apache 2.0 License.

Excavator image by macrovector on Freepik

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amazon-textract-textractor-1.9.2.tar.gz (304.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

amazon_textract_textractor-1.9.2-py3-none-any.whl (311.0 kB view details)

Uploaded Python 3

File details

Details for the file amazon-textract-textractor-1.9.2.tar.gz.

File metadata

File hashes

Hashes for amazon-textract-textractor-1.9.2.tar.gz
Algorithm Hash digest
SHA256 ed69f88b33a6b131454fefc7823c8eb8cf18ef29a02faef87c0023ab425faa02
MD5 403e45b4d37807fa439fc92a5acc8222
BLAKE2b-256 96bdd8009776fbb8055e8c73b87a914c138f4c60a42885a8bc50d99153e939a8

See more details on using hashes here.

File details

Details for the file amazon_textract_textractor-1.9.2-py3-none-any.whl.

File metadata

File hashes

Hashes for amazon_textract_textractor-1.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7faf3a991588e8aad2527c93fa79115f569002d6dc0cada4cf4e57df07fb4410
MD5 cd38fd9d3aa7fdd0b51c30fcddd22ad3
BLAKE2b-256 761cf60a35c1ba5781944f5f50bb4320da8e3723387f11cb9b2bb56dde9c2961

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page