High-fidelity document parsing for AI, self-hosted

Structure, tables and layout preserved — not just text. No cloud account: docker run and go.

  • < 5min

    from zero to production document parsing
  • -40%*

    fewer LLM tokens with DocLang
A terminal session: FineParser started with docker run, a document POSTed to the parse endpoint with curl, and the structured DocLang output it returns — a heading and a table inside a doclang element.
How it works

Three steps to structured data

From a raw document to clean DocLang or JSON, entirely inside your own infrastructure.

  1. 01 Docker Run

    Pull the container and run it with your license file.

    $ docker run -p 8080:8080 \
      -e FINEPARSER_LICENSE_DATA="$(cat acme.fineparserlicense)" \
      abbyyteam/fineparser
  2. 02 Submit

    POST a document file to the API endpoint.

    curl -X POST localhost:8080/parse \
      -F file=@form.pdf \
      -F outputType=doclang
  3. 03 Parse

    Get back DocLang or JSON

    <doclang>
      <heading level="1">Form 1040 (2025)</heading>
      <table>
        <ched/>Line<ched/>Description<ched/>Amount<nl/>
        <fcel/>1a<fcel/>Wages (W-2 box 1)<fcel/>$68,400<nl/>
        <fcel/>11<fcel/>Adjusted gross income<fcel/>$71,250<nl/>
        <srow/>Total tax<lcel/><lcel/><fcel/>$9,842<nl/>
      </table>
    </doclang>
Developer experience

One endpoint, any language

POST a file to /parse, get the parsed document back. Plain HTTP, so nothing to install and no SDK to keep up to date.

curl -X POST http://localhost:8080/parse \
  -F "file=@invoice.pdf" \
  -F "outputType=doclang" \
  -o invoice.doclang

Writing the integration with Claude Code or Codex? Point it at the ABBYY docs MCP server and it writes against the real API. See how →

Built for LLMs

DocLang speaks fewer tokens

DocLang's markup maps cleanly to LLM tokens. Extend your tokenizer with it, and the same document costs up to 40% less to feed into your model.*

1

Add the special tokens

Extend any Hugging Face tokenizer with DocLang's vocabulary in a few lines:

from transformers import AutoTokenizer
import doclang.tokenization as dt

tokenizer = AutoTokenizer.from_pretrained("openai/gpt-oss-20b")
tokenizer.add_special_tokens(
    {"additional_special_tokens": dt.get_special_tokens()}
)
2

Fewer tokens per document

Real reductions across two production-grade tokenizers:

-41%

granite-4.0

-45%

gpt-oss-20b

*Full methodology and benchmark details in the FAQ.

About

Built on three decades of OCR expertise

FineParser is made by ABBYY, the document recognition company founded in 1989, named a Leader in the 2026 Gartner® Magic Quadrant™ for Intelligent Document Processing Solutions. Learn more about ABBYY →

Founded in 1989
500+ employees worldwide
Pricing

Start free. Scale when you're ready.

All plans are self-service monthly subscriptions — except Enterprise. Pull the Docker image and parse your first document in under five minutes.

Processing stops when the monthly page limit is reached. No overages — upgrade or wait for the next billing period.

Enterprise

Custom pricing

Full FineReader Engine SDK. Air-gapped, unlimited volume, enterprise SLAs.

  • Everything in Business
  • Additional features and configurability
  • Auto-scale 500+ pages / second
  • Unlimited pages
  • Air-gapped deployment, zero connectivity
  • Enterprise SLAs
  • ABBYY technical support

The FineReader Engine behind FineParser is trusted by Volkswagen and enterprises worldwide.

Talk to sales

See full pricing and feature comparison →

Support

Get help on GitHub

Every self-service tier is community-supported. Report a bug, read the source, or ask the team and other users directly — all in the open, on GitHub.

Enterprise customers get ABBYY Business Support with defined SLAs. Compare support levels →

FAQ

Frequently asked questions

What is FineParser?

FineParser is a self-hosted, Docker-native document-parsing engine for AI applications, powered by ABBYY FineReader Engine.

Is it self-hosted?

Yes — FineParser runs entirely on your own infrastructure via docker run. Sign up to get your .fineparserlicense file, pass its contents to the container in the FINEPARSER_LICENSE_DATA environment variable, and you're parsing right away. No key to activate and nothing to mount.

How much does it cost?

FineParser starts free — 1,000 pages/month for a year. Paid plans run $119–$2,000/month for 25,000 to 1,000,000 pages, and Enterprise offers custom, volume-based licensing with the full FineReader Engine SDK. See pricing for the full tier and feature comparison.

What formats does it export?

Three: DocLang, JSON and TXT. DocLang is the structure-preserving default built for LLMs; JSON carries the same structure with pixel-accurate bounding boxes.

Does DocLang reduce LLM token costs?

Yes. DocLang's markup is a controlled vocabulary built to map cleanly to LLM tokens, and extending your tokenizer with its special tokens cuts token consumption by roughly 40% on average.

*Methodology: benchmarked across 8,030 DocLang documents, comparing each tokenizer's base vocabulary against the same tokenizer extended with DocLang's special tokens via the open-source doclang package (doclang.tokenization.get_special_tokens()). Results: -41% mean / -40% median on granite-4.0, and -45% mean / -45% median on gpt-oss-20b. Actual savings depend on your documents and choice of base tokenizer. See DocLang speaks fewer tokens for the integration code.

What languages does it support?

200+ languages, including Latin, Cyrillic, CJK, and Arabic scripts.

Can it run fully offline / air-gapped?

FineParser only requires a connection to a single ABBYY server for subscription validation. The Enterprise tier supports full air-gapped deployment with zero connectivity.

Start parsing documents in minutes.

$ docker pull abbyyteam/fineparser
Start for free