Open-source project
PaddlePaddle/PaddleOCR avatar
PaddlePaddle/PaddleOCR

PaddleOCR 3.7: From PDF to LLM-Ready Data with a 0.9B Vision Model

Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100+ languages.

89,583 stars11,336 forksPythonApache-2.0

At a glance

What is it?
PaddleOCR is an Apache-2.0 Python toolkit that turns PDFs and images into Markdown or JSON for LLM pipelines. The current release adds PP-OCRv6 for fast scene text and PaddleOCR-VL-1.6 for document parsing, but the real trade-off is between accuracy and deployment complexity.
Who is it for?
Adopt PaddleOCR if you need a single toolkit that covers both high-accuracy document parsing (PaddleOCR-VL-1.6) and fast multilingual scene text (PP-OCRv6), especially if you are already in the Paddle ecosystem or need to deploy on CPUs or edge devices. Do not adopt it if you require a purely Transformers-based stack, because only 20 models support that backend and the default is Paddle static graph.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 56 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What PaddleOCR Actually Solves

PaddleOCR addresses a specific bottleneck in the LLM pipeline: getting text out of PDFs and images in a structured form that a model can consume. The README frames it as converting documents into JSON or Markdown, which is what RAG and agentic applications need. The tool is for engineers building retrieval-augmented generation, document processing, or dataset creation for fine-tuning. It is not just a text extractor. It claims to handle tables, formulas, seals, charts, and even ancient documents. That breadth is unusual. Most OCR tools focus on plain text or simple layout. PaddleOCR positions itself as a full document AI engine, with separate models for scene text and document parsing. The target user is someone who needs both high accuracy and production deployment options, from edge to cloud.

The Two-Model Architecture: PP-OCRv6 and PaddleOCR-VL-1.6

The repository separates concerns into two model families. PP-OCRv6 is for universal text recognition: scene text, IDs, street views, industrial components. It supports 50 languages in a single model, which means no model switching for multilingual documents. The README claims a 5.2x CPU inference speedup with OpenVINO and 6.1x on Apple M4 for the tiny tier. PaddleOCR-VL-1.6 is a 0.9B vision-language model for document parsing, outputting Markdown or JSON. It scores 96.3% on OmniDocBench v1.6. The key difference: PP-StructureV3 provides fine-grained coordinates like table cell coordinates, while the VL series does not. That is a real trade-off. If you need to know exactly where a cell sits on a page, you choose PP-StructureV3. If you want a single model that handles text, formulas, and tables together, you choose the VL model. The README claims the VL architecture is fully consistent with 1.5, so swapping versions is zero-cost, but that only applies within the VL family.

Getting It Running: Installation and First Commands

The README does not include explicit installation commands, but the project is a Python package on PyPI, so the standard path is pip install paddleocr. The homepage and documentation links point to detailed tutorials. The repository layout suggests a pipeline API where you instantiate a PaddleOCR object and call predict on a document. For the VL models, the README mentions availability on HuggingFace and ModelScope, and the 3.5.0 release notes say 20 major models support Transformers as an inference backend. That means you can load PaddleOCR-VL-1.6 via the Transformers library if you prefer. The 3.7.0 release adds HPD-Parsing, which supports OpenAI-compatible serving and local inference through a customized vLLM runtime. The tutorial link gives environment setup and serving instructions. The config keys are not in the README, so you will need to consult the official docs. The one-click deployment claim mentions NVIDIA GPU, Intel CPU, Kunlunxin XPU, and other accelerators, but the exact flags are not listed.

The HPD-Parsing Addition: High Throughput Comes with a Catch

The 2026.07.22 update introduces HPD-Parsing, a lightweight VLM for high-throughput document parsing. It uses hierarchical parallel decoding and Progressive Multi-Token Prediction (P-MTP), achieving a peak throughput of 4,752 tokens/s on public benchmarks. That is a significant number if you are processing large volumes. But the catch is the deployment requirement: it needs a customized vLLM runtime. That is not a standard pip install. You have to set up a specific serving environment. The README says it supports OpenAI-compatible serving, which is good for integration, but the custom runtime means you cannot just swap it into an existing vLLM setup. The trade-off is clear: you get high throughput, but you take on a non-standard dependency. For teams already using vLLM, that could be a friction point. The README does not specify whether the custom runtime is open source or how it is distributed, so you need to verify that before adopting.

Limitations and Failure Modes

The README is heavy on accuracy claims and light on failure cases. That is a red flag. No OCR tool is perfect, and the benchmark numbers are on OmniDocBench, which is a specific benchmark, not your documents. The VL model is 0.9B parameters, which is small for a VLM, so it may struggle on complex layouts that the benchmark does not cover. The README mentions improvements in ancient documents and rare characters, but that does not mean it handles all historical scripts. Another limitation: the PP-OCRv6 model covers 50 languages, but the overall project claims 100+ languages. That gap means some languages require model switching or older models. The 3.5.0 release notes say 20 major models support Transformers, but the default inference backend is Paddle static graph. If your team is not familiar with Paddle, the learning curve is steep. The README also mentions PaddleOCR.js for browser inference, but only supports PP-OCRv5, not the newer v6, so browser users are stuck on an older model.

Alternatives: Tesseract and Cloud APIs

The most obvious alternative is Tesseract, an open-source OCR engine that has been around for decades. Tesseract is a pure text extractor. It does not produce Markdown or JSON. You get bounding boxes and text, but you have to build your own structure detection. PaddleOCR is a different approach: it integrates detection, recognition, and layout parsing into a single pipeline. For document parsing, a cloud API like Azure Form Recognizer or Google Document AI is a real alternative. Those services handle tables and forms well, and they offload infrastructure. The difference is control and cost. PaddleOCR runs on your hardware, which is a plus for data privacy and for batch processing. But the cloud APIs have a simpler integration path and no model management. The README claims PaddleOCR outperforms closed-source solutions on public benchmarks, but that is a benchmark claim, not a guarantee for your specific documents. If you need a quick, managed solution, a cloud API is easier. If you need to run offline or customize models, PaddleOCR is the stronger choice.

Maintenance and License Implications

The project is under the Apache-2.0 license, which is permissive. You can use it in commercial products, modify it, and distribute it, as long as you preserve the license notice. That is a low-risk license for most companies. The maintenance activity is high: the last push was 2026-06-11, with releases on 2026-06-11, 2026-05-28, and 2026-04-21. That is roughly one release per month. The README lists three recent releases, each adding new models and features. That pace is good for getting fixes and improvements, but it also means the API and model defaults can change quickly. The 3.6.0 release notes say the VL architecture is consistent with 1.5, so swapping versions is zero-cost, but that is only for VL models. PP-OCRv6 is new, and if you upgrade from v5, you may need to change your code. The documentation links to a separate site, so the README is not self-contained. You will need to track the docs for breaking changes. The project also has an official website and a DeepWiki page, which suggests a mature ecosystem, but that does not replace your own testing.

Editorial conclusion

Adopt PaddleOCR if you need a single toolkit that covers both high-accuracy document parsing (PaddleOCR-VL-1.6) and fast multilingual scene text (PP-OCRv6), especially if you are already in the Paddle ecosystem or need to deploy on CPUs or edge devices. Do not adopt it if you require a purely Transformers-based stack, because only 20 models support that backend and the default is Paddle static graph. Before committing, verify that your document types (tables, formulas, ancient scripts) are covered by the OmniDocBench results, and check the vLLM runtime requirements for HPD-Parsing if you need high throughput. The 3.7.0 release is active, with three releases in the last two months, so the upgrade path is short, but each release changes model defaults and backends, so plan for migration testing.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes