finds.dev← search

// the find

enoch3712/ExtractThinker

★ 1,578 · Python · Apache-2.0 · updated Aug 2025

ExtractThinker is a Document Intelligence library for LLMs, offering ORM-style interaction for flexible and powerful document workflows.

ExtractThinker is a Python library for extracting structured data from documents using LLMs, with Pydantic models as the schema definition layer. Think of it as a typed ORM for document parsing — you define what fields you want, point it at a PDF or image, and it handles the OCR-to-LLM pipeline. Aimed at developers building document processing workflows who want something more focused than LangChain.

The Pydantic contract model is the right abstraction — defining extraction schemas as typed classes catches mismatches at instantiation time rather than when you try to use the result. Loader diversity is genuinely useful: Tesseract, Azure Form Recognizer, AWS Textract, Google Document AI, and plain PyPDF are all first-class, so you can swap OCR backends without touching extraction logic. The classification-then-extract flow (classify document type, then apply the matching contract) solves a real problem in mixed-document pipelines that most people hack around with conditionals. Built-in eval tooling including hallucination detection and cost tracking is something LangChain makes you build yourself.

The ORM analogy breaks down quickly: unlike a real ORM, there's no schema migration, no validation that the LLM output matches your contract in edge cases, and no clear story for when extraction silently returns wrong-but-plausible values. Batch processing in the README is async but uses an `await` inside a non-async context in the example — that code doesn't run as written. The splitting strategies (lazy vs eager) sound promising but the docs don't explain cost implications clearly; eager splitting on a 100-page document will burn through tokens fast with no warning. No built-in retry or fallback when the LLM returns malformed JSON, which happens more than you'd like with weaker models.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →