{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/huggingface-co/2026-06-22-pp-ocrv6-on-hugging-face-50-language-ocr-from-1-5m-to-34-5m/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "> **Evaluate PP-OCRv6 online, then integrate lightweight, production-ready OCR with PaddlePaddle, Transformers, or ONNX Runtime backend.**\n\nPP-OCRv6 is the latest generation of PaddleOCR’s universal OCR model family. It is designed for real-world text detection and recognition across documents, screenshots, multilingual images, digital displays, industrial labels, and scene text.\n\n[![ppocrv6_det_vis](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/BB9bToA0xHZ8Xu5cvBGx0.jpeg)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/BB9bToA0xHZ8Xu5cvBGx0.jpeg)\n\nThe model family scales from **1.5M to 34.5M parameters**, with three tiers: **tiny**, **small**, and **medium**. The medium and small tiers support **50 languages**, including Simplified Chinese, Traditional Chinese, English, Japanese, and 46 Latin-script languages. Try PP-OCRv6 online quickly: [PP-OCRv6 Online Demo](https://huggingface.co/spaces/PaddlePaddle/PP-OCRv6_Online_Demo).\n\n[![ocrv6_models](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Rwhy6dk3g8xb6eyVFL9R_.jpeg)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Rwhy6dk3g8xb6eyVFL9R_.jpeg)\n\nOn PaddleOCR’s official in-house multi-scenario OCR benchmarks, **PP-OCRv6\\_medium** reaches **86.2% detection Hmean** and **83.2% recognition accuracy**. Compared with PP-OCRv5\\_server, it improves text detection by **+4.6 percentage points** and text recognition by **+5.1 percentage points**.\n\n[![v6acc_opt](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/xYqS-wDYHDE7cUQQdkcqD.png)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/xYqS-wDYHDE7cUQQdkcqD.png)\n\nPP-OCRv6 focuses on a practical OCR need: producing accurate, structured text outputs with small models and flexible deployment options. For a deeper discussion of why specialized OCR models remain useful in the VLM era, see our previous blog: [PP-OCRv5 on Hugging Face: A Specialized Approach to OCR](https://huggingface.co/blog/baidu/ppocrv5).\n\n* * *\n\n## What’s new in PP-OCRv6\n\nPP-OCRv6 introduces architecture, training, and data improvements across detection and recognition. The main design goal is to improve OCR accuracy while keeping model sizes suitable for different deployment settings.\n\n### Three model tiers\n\nPP-OCRv6 provides three model tiers, covering different model sizes and OCR accuracy levels.\n\n| Model                | Model size       | Detection Hmean | Recognition accuracy | Typical application scenarios                                                                      |\n| -------------------- | ---------------- | --------------- | -------------------- | -------------------------------------------------------------------------------------------------- |\n| **PP-OCRv6\\_tiny**   | **1.5M params**  | 80.6%           | 73.5%                | Edge devices, lightweight local OCR, latency-sensitive demos, constrained environments             |\n| **PP-OCRv6\\_small**  | **7.7M params**  | 84.1%           | 81.3%                | Mobile, desktop, balanced OCR services, multilingual OCR with lower compute cost                   |\n| **PP-OCRv6\\_medium** | **34.5M params** | **86.2%**       | **83.2%**            | Accuracy-oriented OCR, server-side pipelines, industrial OCR, document ingestion, multilingual OCR |\n\n### PPLCNetV4 backbone\n\nPP-OCRv6 uses **PPLCNetV4** as a unified backbone for text detection and text recognition.\n\nFor developers, the main benefit is consistency across the model family. The tiny, small, and medium tiers are not unrelated models; they are part of the same OCR family and share a common architectural direction.\n\n[![Image](https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/authcode/?code=MzQ2ODgzNWViOTJhYjMzZDUxNTMyY2RlMzdhMDAwZmNfZWJmZGY5NTljOWJlY2YyODVhYzg0N2NhNTk3MjQwMTRfSUQ6NzY1MjcxNjg0NDE1OTMyMzA5N18xNzgxODE5MjkwOjE3ODE5MDU2OTBfVjM)](https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/authcode/?code=MzQ2ODgzNWViOTJhYjMzZDUxNTMyY2RlMzdhMDAwZmNfZWJmZGY5NTljOWJlY2YyODVhYzg0N2NhNTk3MjQwMTRfSUQ6NzY1MjcxNjg0NDE1OTMyMzA5N18xNzgxODE5MjkwOjE3ODE5MDU2OTBfVjM)\n\n### RepLKFPN for text detection\n\nText detection is the first stage of the OCR pipeline. Detection quality affects the crops sent to the recognizer, and poor crops often lead to poorer recognition.\n\nPP-OCRv6 upgrades the detection module with **RepLKFPN**, a lightweight large-kernel feature pyramid network designed for multi-scale text detection while keeping inference efficient.\n\nThis is relevant for real-world OCR inputs, where text may be small, dense, rotated, low-resolution, or embedded in complex backgrounds.\n\n[![ppocrv6_det_pip_ori](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Unp8cz-s3c4jSMl71qIFf.png)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Unp8cz-s3c4jSMl71qIFf.png)\n\n### EncoderWithLightSVTR for recognition\n\nFor text recognition, PP-OCRv6 uses **EncoderWithLightSVTR**. It combines local context modeling with global attention to improve recognition quality on challenging text crops.\n\nThe recognition improvements are especially relevant for multilingual text, screen text, industrial characters, special symbols, dense text, and noisy image regions.\n\n[![rec](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/YLhR7a1-BdP62o0o_zZl1.png)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/YLhR7a1-BdP62o0o_zZl1.png)\n\n### Unified multilingual OCR\n\nThe medium and small tiers support **50 languages** in one model family, covering Simplified Chinese, Traditional Chinese, English, Japanese, and 46 Latin-script languages.\n\nThis helps reduce the need for separate OCR models across common multilingual OCR scenarios.\n\n* * *\n\n## Quick start with PaddleOCR\n\nInstall PaddleOCR:\n\n```bash\npip install paddleocr\n```\n\nRun OCR with Paddle Infernece(Default backend):\n\n```python\nfrom paddleocr import PaddleOCR\n\n# Model: PP-OCRv6_medium(Default)\n# Backend: Paddle Inference(Default)\nocr = PaddleOCR(\n    use_doc_orientation_classify=False,\n    use_doc_unwarping=False,\n    use_textline_orientation=False,\n)\nresult = ocr.predict(\"https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png\")\n\nfor res in result:\n    res.print()\n    res.save_to_img(\"output\")\n    res.save_to_json(\"output\")\n```\n\nThe OCR result can be saved as visualization images and structured JSON output. The structured output can then be used by downstream systems such as document parsing, search, extraction, RAG, analytics, or agent workflows.\n\n* * *\n\n## Available inference backends\n\nPP-OCRv6 can be used with multiple inference backends through PaddleOCR. **PaddleOCR 3.7** provides a unified inference-engine interface, where `engine` selects the underlying runtime and related configuration can be passed through the pipeline or module API.\n\n| **Backend**          | **Description**                                                               |\n| -------------------- | ----------------------------------------------------------------------------- |\n| **Transformers**     | Hugging Face / PyTorch-oriented inference path for supported PaddleOCR models |\n| **ONNX Runtime**     | Portable inference path for ONNX-based deployment environments                |\n| **Paddle Inference** | Native Paddle inference format                                                |\n\nFor Hugging Face users, PaddleOCR supports running selected OCR and document parsing models with a Transformers backend. This can be enabled with:\n\n```python\nengine=\"transformers\"\n```\n\nFor more details on how the Transformers backend works in PaddleOCR, see:\n\n[PaddleOCR: Running OCR and Document Parsing Tasks with a Transformers Backend](https://huggingface.co/blog/PaddlePaddle/paddleocr-transformers)\n\nRun PP-OCRv6 example with Transformer Backend:\n\n```python\n\nfrom paddleocr import PaddleOCR\n\n# Model: PP-OCRv6_medium(Default)\n# Backend: transformers\nocr = PaddleOCR(\n    use_doc_orientation_classify=False,\n    use_doc_unwarping=False,\n    use_textline_orientation=False,\n    engine=\"transformers\",\n)\nresult = ocr.predict(\"https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png\")\n```\n\nONNX variants are also available in the [PP-OCRv6 Collection](https://huggingface.co/collections/PaddlePaddle/pp-ocrv6) for environments that use ONNX Runtime through `engine=\"onnxruntime\"`:\n\n```python\nfrom paddleocr import PaddleOCR\n\n# Model: PP-OCRv6_medium(Default)\n# Backend: ONNX Runtime\nocr = PaddleOCR(\n    use_doc_orientation_classify=False,\n    use_doc_unwarping=False,\n    use_textline_orientation=False,\n    engine=\"onnxruntime\",\n)\nresult = ocr.predict(\"https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png\")\n```\n\nTogether, these backend options make PP-OCRv6 available across different runtime environments while keeping the same OCR model family on the Hugging Face Hub.\n\n* * *\n\n## Conclusion\n\nPP-OCRv6 extends PaddleOCR with a lightweight, multilingual OCR model family for real-world text detection and recognition.\n\nThe release includes three model tiers from **1.5M to 34.5M parameters**, up to **50-language OCR support**, improved detection and recognition accuracy over PP-OCRv5\\_server, and multiple model formats on the Hugging Face Hub, including **safetensors**, **Paddle inference models**, and **ONNX models**.\n\nTogether with the hosted Hugging Face Space and the available PaddleOCR inference backends, PP-OCRv6 provides several entry points for evaluation and integration:\n\n- **Online Demo**: [PP-OCRv6 Online Demo](https://huggingface.co/spaces/PaddlePaddle/PP-OCRv6_Online_Demo)\n\n- **Model Collection**: [PP-OCRv6 Collection](https://huggingface.co/collections/PaddlePaddle/pp-ocrv6)\n\n- **Transformers Backend Blog**: [PaddleOCR with Transformers Backend](https://huggingface.co/blog/PaddlePaddle/paddleocr-transformers)\n\n- **PaddleOCR Documentation**: [PP-OCRv6 Documentation](https://www.paddleocr.ai/latest/en/version3.x/algorithm/PP-OCRv6/PP-OCRv6.html)\n\n- **PaddleOCR Official Website**: [https://www.paddleocr.com](https://www.paddleocr.com)\n\nYou can evaluate PP-OCRv6 with the online demo, explore the available model assets in the Collection, and use the inference backend that matches your own OCR workflow.\n",
  "authors": [],
  "captured_at": "2026-10-19T01:26:53.998049939+00:00",
  "category": "ai",
  "content_html": "<blockquote>\n<p><strong>Evaluate PP-OCRv6 online, then integrate lightweight, production-ready OCR with PaddlePaddle, Transformers, or ONNX Runtime backend.</strong></p>\n</blockquote>\n<p>PP-OCRv6 is the latest generation of PaddleOCR’s universal OCR model family. It is designed for real-world text detection and recognition across documents, screenshots, multilingual images, digital displays, industrial labels, and scene text.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/BB9bToA0xHZ8Xu5cvBGx0.jpeg\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/BB9bToA0xHZ8Xu5cvBGx0.jpeg\" alt=\"ppocrv6_det_vis\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>The model family scales from <strong>1.5M to 34.5M parameters</strong>, with three tiers: <strong>tiny</strong>, <strong>small</strong>, and <strong>medium</strong>. The medium and small tiers support <strong>50 languages</strong>, including Simplified Chinese, Traditional Chinese, English, Japanese, and 46 Latin-script languages. Try PP-OCRv6 online quickly: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/spaces/PaddlePaddle/PP-OCRv6_Online_Demo\">PP-OCRv6 Online Demo</a>.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Rwhy6dk3g8xb6eyVFL9R_.jpeg\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Rwhy6dk3g8xb6eyVFL9R_.jpeg\" alt=\"ocrv6_models\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>On PaddleOCR’s official in-house multi-scenario OCR benchmarks, <strong>PP-OCRv6_medium</strong> reaches <strong>86.2% detection Hmean</strong> and <strong>83.2% recognition accuracy</strong>. Compared with PP-OCRv5_server, it improves text detection by <strong>+4.6 percentage points</strong> and text recognition by <strong>+5.1 percentage points</strong>.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/xYqS-wDYHDE7cUQQdkcqD.png\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/xYqS-wDYHDE7cUQQdkcqD.png\" alt=\"v6acc_opt\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>PP-OCRv6 focuses on a practical OCR need: producing accurate, structured text outputs with small models and flexible deployment options. For a deeper discussion of why specialized OCR models remain useful in the VLM era, see our previous blog: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/blog/baidu/ppocrv5\">PP-OCRv5 on Hugging Face: A Specialized Approach to OCR</a>.</p>\n<hr />\n<h2>What’s new in PP-OCRv6</h2>\n<p>PP-OCRv6 introduces architecture, training, and data improvements across detection and recognition. The main design goal is to improve OCR accuracy while keeping model sizes suitable for different deployment settings.</p>\n<h3>Three model tiers</h3>\n<p>PP-OCRv6 provides three model tiers, covering different model sizes and OCR accuracy levels.</p>\n<table>\n<thead>\n<tr>\n<th>Model</th>\n<th>Model size</th>\n<th>Detection Hmean</th>\n<th>Recognition accuracy</th>\n<th>Typical application scenarios</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>PP-OCRv6_tiny</strong></td>\n<td><strong>1.5M params</strong></td>\n<td>80.6%</td>\n<td>73.5%</td>\n<td>Edge devices, lightweight local OCR, latency-sensitive demos, constrained environments</td>\n</tr>\n<tr>\n<td><strong>PP-OCRv6_small</strong></td>\n<td><strong>7.7M params</strong></td>\n<td>84.1%</td>\n<td>81.3%</td>\n<td>Mobile, desktop, balanced OCR services, multilingual OCR with lower compute cost</td>\n</tr>\n<tr>\n<td><strong>PP-OCRv6_medium</strong></td>\n<td><strong>34.5M params</strong></td>\n<td><strong>86.2%</strong></td>\n<td><strong>83.2%</strong></td>\n<td>Accuracy-oriented OCR, server-side pipelines, industrial OCR, document ingestion, multilingual OCR</td>\n</tr>\n</tbody>\n</table>\n<h3>PPLCNetV4 backbone</h3>\n<p>PP-OCRv6 uses <strong>PPLCNetV4</strong> as a unified backbone for text detection and text recognition.</p>\n<p>For developers, the main benefit is consistency across the model family. The tiny, small, and medium tiers are not unrelated models; they are part of the same OCR family and share a common architectural direction.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/authcode/?code=MzQ2ODgzNWViOTJhYjMzZDUxNTMyY2RlMzdhMDAwZmNfZWJmZGY5NTljOWJlY2YyODVhYzg0N2NhNTk3MjQwMTRfSUQ6NzY1MjcxNjg0NDE1OTMyMzA5N18xNzgxODE5MjkwOjE3ODE5MDU2OTBfVjM\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/authcode/?code=MzQ2ODgzNWViOTJhYjMzZDUxNTMyY2RlMzdhMDAwZmNfZWJmZGY5NTljOWJlY2YyODVhYzg0N2NhNTk3MjQwMTRfSUQ6NzY1MjcxNjg0NDE1OTMyMzA5N18xNzgxODE5MjkwOjE3ODE5MDU2OTBfVjM\" alt=\"Image\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<h3>RepLKFPN for text detection</h3>\n<p>Text detection is the first stage of the OCR pipeline. Detection quality affects the crops sent to the recognizer, and poor crops often lead to poorer recognition.</p>\n<p>PP-OCRv6 upgrades the detection module with <strong>RepLKFPN</strong>, a lightweight large-kernel feature pyramid network designed for multi-scale text detection while keeping inference efficient.</p>\n<p>This is relevant for real-world OCR inputs, where text may be small, dense, rotated, low-resolution, or embedded in complex backgrounds.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Unp8cz-s3c4jSMl71qIFf.png\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Unp8cz-s3c4jSMl71qIFf.png\" alt=\"ppocrv6_det_pip_ori\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<h3>EncoderWithLightSVTR for recognition</h3>\n<p>For text recognition, PP-OCRv6 uses <strong>EncoderWithLightSVTR</strong>. It combines local context modeling with global attention to improve recognition quality on challenging text crops.</p>\n<p>The recognition improvements are especially relevant for multilingual text, screen text, industrial characters, special symbols, dense text, and noisy image regions.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/YLhR7a1-BdP62o0o_zZl1.png\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/YLhR7a1-BdP62o0o_zZl1.png\" alt=\"rec\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<h3>Unified multilingual OCR</h3>\n<p>The medium and small tiers support <strong>50 languages</strong> in one model family, covering Simplified Chinese, Traditional Chinese, English, Japanese, and 46 Latin-script languages.</p>\n<p>This helps reduce the need for separate OCR models across common multilingual OCR scenarios.</p>\n<hr />\n<h2>Quick start with PaddleOCR</h2>\n<p>Install PaddleOCR:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">pip</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> install paddleocr</span>\n</span></span></code></pre>\n<p>Run OCR with Paddle Infernece(Default backend):</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-from syntax-python\">from</span></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-meta syntax-import-source syntax-python\"> <span class=\"syntax-meta syntax-import-path syntax-python\"><span class=\"syntax-meta syntax-import-name syntax-python\">paddleocr</span></span> <span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-python\">import</span></span></span></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"> <span class=\"syntax-meta syntax-generic-name syntax-python\">PaddleOCR</span></span>\n\n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> Model: PP-OCRv6_medium(Default)\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> Backend: Paddle Inference(Default)\n</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">ocr</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">PaddleOCR</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_doc_orientation_classify</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_doc_unwarping</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_textline_orientation</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n<span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">result</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">ocr</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">predict</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n\n<span class=\"syntax-meta syntax-statement syntax-for syntax-python\"><span class=\"syntax-keyword syntax-control syntax-flow syntax-for syntax-python\">for</span> <span class=\"syntax-meta syntax-generic-name syntax-python\">res</span> <span class=\"syntax-meta syntax-statement syntax-for syntax-python\"><span class=\"syntax-keyword syntax-control syntax-flow syntax-for syntax-in syntax-python\">in</span></span></span><span class=\"syntax-meta syntax-statement syntax-for syntax-python\"> <span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">result</span></span><span class=\"syntax-punctuation syntax-section syntax-block syntax-for syntax-python\">:</span></span>\n    <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">res</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">print</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n    <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">res</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">save_to_img</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">output<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n    <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">res</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">save_to_json</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">output<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<p>The OCR result can be saved as visualization images and structured JSON output. The structured output can then be used by downstream systems such as document parsing, search, extraction, RAG, analytics, or agent workflows.</p>\n<hr />\n<h2>Available inference backends</h2>\n<p>PP-OCRv6 can be used with multiple inference backends through PaddleOCR. <strong>PaddleOCR 3.7</strong> provides a unified inference-engine interface, where <code>engine</code> selects the underlying runtime and related configuration can be passed through the pipeline or module API.</p>\n<table>\n<thead>\n<tr>\n<th><strong>Backend</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Transformers</strong></td>\n<td>Hugging Face / PyTorch-oriented inference path for supported PaddleOCR models</td>\n</tr>\n<tr>\n<td><strong>ONNX Runtime</strong></td>\n<td>Portable inference path for ONNX-based deployment environments</td>\n</tr>\n<tr>\n<td><strong>Paddle Inference</strong></td>\n<td>Native Paddle inference format</td>\n</tr>\n</tbody>\n</table>\n<p>For Hugging Face users, PaddleOCR supports running selected OCR and document parsing models with a Transformers backend. This can be enabled with:</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">engine</span></span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">transformers<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span>\n</span></span></code></pre>\n<p>For more details on how the Transformers backend works in PaddleOCR, see:</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/blog/PaddlePaddle/paddleocr-transformers\">PaddleOCR: Running OCR and Document Parsing Tasks with a Transformers Backend</a></p>\n<p>Run PP-OCRv6 example with Transformer Backend:</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\">\n<span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-from syntax-python\">from</span></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-meta syntax-import-source syntax-python\"> <span class=\"syntax-meta syntax-import-path syntax-python\"><span class=\"syntax-meta syntax-import-name syntax-python\">paddleocr</span></span> <span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-python\">import</span></span></span></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"> <span class=\"syntax-meta syntax-generic-name syntax-python\">PaddleOCR</span></span>\n\n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> Model: PP-OCRv6_medium(Default)\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> Backend: transformers\n</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">ocr</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">PaddleOCR</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_doc_orientation_classify</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_doc_unwarping</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_textline_orientation</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n    <span class=\"syntax-variable syntax-parameter syntax-python\">engine</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">transformers<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n<span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">result</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">ocr</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">predict</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<p>ONNX variants are also available in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/collections/PaddlePaddle/pp-ocrv6\">PP-OCRv6 Collection</a> for environments that use ONNX Runtime through <code>engine=&quot;onnxruntime&quot;</code>:</p>\n<pre><code class=\"language-python\"><span class=\"code-snippet\" data-language=\"Python\"><span class=\"syntax-source syntax-python\"><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-from syntax-python\">from</span></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-meta syntax-import-source syntax-python\"> <span class=\"syntax-meta syntax-import-path syntax-python\"><span class=\"syntax-meta syntax-import-name syntax-python\">paddleocr</span></span> <span class=\"syntax-meta syntax-statement syntax-import syntax-python\"><span class=\"syntax-keyword syntax-control syntax-import syntax-python\">import</span></span></span></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"></span><span class=\"syntax-meta syntax-statement syntax-import syntax-python\"> <span class=\"syntax-meta syntax-generic-name syntax-python\">PaddleOCR</span></span>\n\n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> Model: PP-OCRv6_medium(Default)\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-python\">#</span> Backend: ONNX Runtime\n</span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">ocr</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">PaddleOCR</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\">\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_doc_orientation_classify</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_doc_unwarping</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n    <span class=\"syntax-variable syntax-parameter syntax-python\">use_textline_orientation</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-constant syntax-language syntax-python\">False</span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n    <span class=\"syntax-variable syntax-parameter syntax-python\">engine</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">onnxruntime<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-arguments syntax-python\">,</span>\n</span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n<span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">result</span></span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-python\">=</span> <span class=\"syntax-meta syntax-function-call syntax-python\"><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-meta syntax-generic-name syntax-python\">ocr</span><span class=\"syntax-punctuation syntax-accessor syntax-dot syntax-python\">.</span></span><span class=\"syntax-meta syntax-qualified-name syntax-python\"><span class=\"syntax-variable syntax-function syntax-python\">predict</span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-begin syntax-python\">(</span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-python\"><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-python\">&quot;</span></span></span><span class=\"syntax-meta syntax-string syntax-python\"><span class=\"syntax-string syntax-quoted syntax-double syntax-python\">https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-python\">&quot;</span></span></span></span><span class=\"syntax-punctuation syntax-section syntax-arguments syntax-end syntax-python\">)</span></span>\n</span></span></code></pre>\n<p>Together, these backend options make PP-OCRv6 available across different runtime environments while keeping the same OCR model family on the Hugging Face Hub.</p>\n<hr />\n<h2>Conclusion</h2>\n<p>PP-OCRv6 extends PaddleOCR with a lightweight, multilingual OCR model family for real-world text detection and recognition.</p>\n<p>The release includes three model tiers from <strong>1.5M to 34.5M parameters</strong>, up to <strong>50-language OCR support</strong>, improved detection and recognition accuracy over PP-OCRv5_server, and multiple model formats on the Hugging Face Hub, including <strong>safetensors</strong>, <strong>Paddle inference models</strong>, and <strong>ONNX models</strong>.</p>\n<p>Together with the hosted Hugging Face Space and the available PaddleOCR inference backends, PP-OCRv6 provides several entry points for evaluation and integration:</p>\n<ul>\n<li>\n<p><strong>Online Demo</strong>: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/spaces/PaddlePaddle/PP-OCRv6_Online_Demo\">PP-OCRv6 Online Demo</a></p>\n</li>\n<li>\n<p><strong>Model Collection</strong>: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/collections/PaddlePaddle/pp-ocrv6\">PP-OCRv6 Collection</a></p>\n</li>\n<li>\n<p><strong>Transformers Backend Blog</strong>: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/blog/PaddlePaddle/paddleocr-transformers\">PaddleOCR with Transformers Backend</a></p>\n</li>\n<li>\n<p><strong>PaddleOCR Documentation</strong>: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.paddleocr.ai/latest/en/version3.x/algorithm/PP-OCRv6/PP-OCRv6.html\">PP-OCRv6 Documentation</a></p>\n</li>\n<li>\n<p><strong>PaddleOCR Official Website</strong>: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.paddleocr.com\">https://www.paddleocr.com</a></p>\n</li>\n</ul>\n<p>You can evaluate PP-OCRv6 with the online demo, explore the available model assets in the Collection, and use the inference backend that matches your own OCR workflow.</p>\n",
  "content_markdown": "> **Evaluate PP-OCRv6 online, then integrate lightweight, production-ready OCR with PaddlePaddle, Transformers, or ONNX Runtime backend.**\n\nPP-OCRv6 is the latest generation of PaddleOCR’s universal OCR model family. It is designed for real-world text detection and recognition across documents, screenshots, multilingual images, digital displays, industrial labels, and scene text.\n\n[![ppocrv6_det_vis](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/BB9bToA0xHZ8Xu5cvBGx0.jpeg)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/BB9bToA0xHZ8Xu5cvBGx0.jpeg)\n\nThe model family scales from **1.5M to 34.5M parameters**, with three tiers: **tiny**, **small**, and **medium**. The medium and small tiers support **50 languages**, including Simplified Chinese, Traditional Chinese, English, Japanese, and 46 Latin-script languages. Try PP-OCRv6 online quickly: [PP-OCRv6 Online Demo](https://huggingface.co/spaces/PaddlePaddle/PP-OCRv6_Online_Demo).\n\n[![ocrv6_models](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Rwhy6dk3g8xb6eyVFL9R_.jpeg)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Rwhy6dk3g8xb6eyVFL9R_.jpeg)\n\nOn PaddleOCR’s official in-house multi-scenario OCR benchmarks, **PP-OCRv6\\_medium** reaches **86.2% detection Hmean** and **83.2% recognition accuracy**. Compared with PP-OCRv5\\_server, it improves text detection by **+4.6 percentage points** and text recognition by **+5.1 percentage points**.\n\n[![v6acc_opt](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/xYqS-wDYHDE7cUQQdkcqD.png)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/xYqS-wDYHDE7cUQQdkcqD.png)\n\nPP-OCRv6 focuses on a practical OCR need: producing accurate, structured text outputs with small models and flexible deployment options. For a deeper discussion of why specialized OCR models remain useful in the VLM era, see our previous blog: [PP-OCRv5 on Hugging Face: A Specialized Approach to OCR](https://huggingface.co/blog/baidu/ppocrv5).\n\n* * *\n\n## What’s new in PP-OCRv6\n\nPP-OCRv6 introduces architecture, training, and data improvements across detection and recognition. The main design goal is to improve OCR accuracy while keeping model sizes suitable for different deployment settings.\n\n### Three model tiers\n\nPP-OCRv6 provides three model tiers, covering different model sizes and OCR accuracy levels.\n\n| Model                | Model size       | Detection Hmean | Recognition accuracy | Typical application scenarios                                                                      |\n| -------------------- | ---------------- | --------------- | -------------------- | -------------------------------------------------------------------------------------------------- |\n| **PP-OCRv6\\_tiny**   | **1.5M params**  | 80.6%           | 73.5%                | Edge devices, lightweight local OCR, latency-sensitive demos, constrained environments             |\n| **PP-OCRv6\\_small**  | **7.7M params**  | 84.1%           | 81.3%                | Mobile, desktop, balanced OCR services, multilingual OCR with lower compute cost                   |\n| **PP-OCRv6\\_medium** | **34.5M params** | **86.2%**       | **83.2%**            | Accuracy-oriented OCR, server-side pipelines, industrial OCR, document ingestion, multilingual OCR |\n\n### PPLCNetV4 backbone\n\nPP-OCRv6 uses **PPLCNetV4** as a unified backbone for text detection and text recognition.\n\nFor developers, the main benefit is consistency across the model family. The tiny, small, and medium tiers are not unrelated models; they are part of the same OCR family and share a common architectural direction.\n\n[![Image](https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/authcode/?code=MzQ2ODgzNWViOTJhYjMzZDUxNTMyY2RlMzdhMDAwZmNfZWJmZGY5NTljOWJlY2YyODVhYzg0N2NhNTk3MjQwMTRfSUQ6NzY1MjcxNjg0NDE1OTMyMzA5N18xNzgxODE5MjkwOjE3ODE5MDU2OTBfVjM)](https://internal-api-drive-stream.feishu.cn/space/api/box/stream/download/authcode/?code=MzQ2ODgzNWViOTJhYjMzZDUxNTMyY2RlMzdhMDAwZmNfZWJmZGY5NTljOWJlY2YyODVhYzg0N2NhNTk3MjQwMTRfSUQ6NzY1MjcxNjg0NDE1OTMyMzA5N18xNzgxODE5MjkwOjE3ODE5MDU2OTBfVjM)\n\n### RepLKFPN for text detection\n\nText detection is the first stage of the OCR pipeline. Detection quality affects the crops sent to the recognizer, and poor crops often lead to poorer recognition.\n\nPP-OCRv6 upgrades the detection module with **RepLKFPN**, a lightweight large-kernel feature pyramid network designed for multi-scale text detection while keeping inference efficient.\n\nThis is relevant for real-world OCR inputs, where text may be small, dense, rotated, low-resolution, or embedded in complex backgrounds.\n\n[![ppocrv6_det_pip_ori](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Unp8cz-s3c4jSMl71qIFf.png)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/Unp8cz-s3c4jSMl71qIFf.png)\n\n### EncoderWithLightSVTR for recognition\n\nFor text recognition, PP-OCRv6 uses **EncoderWithLightSVTR**. It combines local context modeling with global attention to improve recognition quality on challenging text crops.\n\nThe recognition improvements are especially relevant for multilingual text, screen text, industrial characters, special symbols, dense text, and noisy image regions.\n\n[![rec](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/YLhR7a1-BdP62o0o_zZl1.png)](https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/YLhR7a1-BdP62o0o_zZl1.png)\n\n### Unified multilingual OCR\n\nThe medium and small tiers support **50 languages** in one model family, covering Simplified Chinese, Traditional Chinese, English, Japanese, and 46 Latin-script languages.\n\nThis helps reduce the need for separate OCR models across common multilingual OCR scenarios.\n\n* * *\n\n## Quick start with PaddleOCR\n\nInstall PaddleOCR:\n\n```bash\npip install paddleocr\n```\n\nRun OCR with Paddle Infernece(Default backend):\n\n```python\nfrom paddleocr import PaddleOCR\n\n# Model: PP-OCRv6_medium(Default)\n# Backend: Paddle Inference(Default)\nocr = PaddleOCR(\n    use_doc_orientation_classify=False,\n    use_doc_unwarping=False,\n    use_textline_orientation=False,\n)\nresult = ocr.predict(\"https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png\")\n\nfor res in result:\n    res.print()\n    res.save_to_img(\"output\")\n    res.save_to_json(\"output\")\n```\n\nThe OCR result can be saved as visualization images and structured JSON output. The structured output can then be used by downstream systems such as document parsing, search, extraction, RAG, analytics, or agent workflows.\n\n* * *\n\n## Available inference backends\n\nPP-OCRv6 can be used with multiple inference backends through PaddleOCR. **PaddleOCR 3.7** provides a unified inference-engine interface, where `engine` selects the underlying runtime and related configuration can be passed through the pipeline or module API.\n\n| **Backend**          | **Description**                                                               |\n| -------------------- | ----------------------------------------------------------------------------- |\n| **Transformers**     | Hugging Face / PyTorch-oriented inference path for supported PaddleOCR models |\n| **ONNX Runtime**     | Portable inference path for ONNX-based deployment environments                |\n| **Paddle Inference** | Native Paddle inference format                                                |\n\nFor Hugging Face users, PaddleOCR supports running selected OCR and document parsing models with a Transformers backend. This can be enabled with:\n\n```python\nengine=\"transformers\"\n```\n\nFor more details on how the Transformers backend works in PaddleOCR, see:\n\n[PaddleOCR: Running OCR and Document Parsing Tasks with a Transformers Backend](https://huggingface.co/blog/PaddlePaddle/paddleocr-transformers)\n\nRun PP-OCRv6 example with Transformer Backend:\n\n```python\n\nfrom paddleocr import PaddleOCR\n\n# Model: PP-OCRv6_medium(Default)\n# Backend: transformers\nocr = PaddleOCR(\n    use_doc_orientation_classify=False,\n    use_doc_unwarping=False,\n    use_textline_orientation=False,\n    engine=\"transformers\",\n)\nresult = ocr.predict(\"https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png\")\n```\n\nONNX variants are also available in the [PP-OCRv6 Collection](https://huggingface.co/collections/PaddlePaddle/pp-ocrv6) for environments that use ONNX Runtime through `engine=\"onnxruntime\"`:\n\n```python\nfrom paddleocr import PaddleOCR\n\n# Model: PP-OCRv6_medium(Default)\n# Backend: ONNX Runtime\nocr = PaddleOCR(\n    use_doc_orientation_classify=False,\n    use_doc_unwarping=False,\n    use_textline_orientation=False,\n    engine=\"onnxruntime\",\n)\nresult = ocr.predict(\"https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png\")\n```\n\nTogether, these backend options make PP-OCRv6 available across different runtime environments while keeping the same OCR model family on the Hugging Face Hub.\n\n* * *\n\n## Conclusion\n\nPP-OCRv6 extends PaddleOCR with a lightweight, multilingual OCR model family for real-world text detection and recognition.\n\nThe release includes three model tiers from **1.5M to 34.5M parameters**, up to **50-language OCR support**, improved detection and recognition accuracy over PP-OCRv5\\_server, and multiple model formats on the Hugging Face Hub, including **safetensors**, **Paddle inference models**, and **ONNX models**.\n\nTogether with the hosted Hugging Face Space and the available PaddleOCR inference backends, PP-OCRv6 provides several entry points for evaluation and integration:\n\n- **Online Demo**: [PP-OCRv6 Online Demo](https://huggingface.co/spaces/PaddlePaddle/PP-OCRv6_Online_Demo)\n\n- **Model Collection**: [PP-OCRv6 Collection](https://huggingface.co/collections/PaddlePaddle/pp-ocrv6)\n\n- **Transformers Backend Blog**: [PaddleOCR with Transformers Backend](https://huggingface.co/blog/PaddlePaddle/paddleocr-transformers)\n\n- **PaddleOCR Documentation**: [PP-OCRv6 Documentation](https://www.paddleocr.ai/latest/en/version3.x/algorithm/PP-OCRv6/PP-OCRv6.html)\n\n- **PaddleOCR Official Website**: [https://www.paddleocr.com](https://www.paddleocr.com)\n\nYou can evaluate PP-OCRv6 with the online demo, explore the available model assets in the Collection, and use the inference backend that matches your own OCR workflow.\n",
  "dateCreated": "2026-10-19T01:26:53.998049939+00:00",
  "date_created": "2026-06-22T13:18:56+00:00",
  "date_modified": "2026-06-22T13:18:56+00:00",
  "date_published": "2026-06-22T13:18:56+00:00",
  "description": "Evaluate PP-OCRv6 online, then integrate lightweight, production-ready OCR with PaddlePaddle, Transformers, or ONNX Runtime backend. PP-OCRv6 is the latest generation of PaddleOCR’s universal OCR model family. It is designed for real-world…",
  "external_url": "https://huggingface.co/blog/PaddlePaddle/pp-ocrv6",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/huggingface-co/2026/06/2026-06-22-pp-ocrv6-on-hugging-face-50-language-ocr-from-1-5m-to-34-5m.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/huggingface-co/2026/06/2026-06-22-pp-ocrv6-on-hugging-face-50-language-ocr-from-1-5m-to-34-5m.md"
  },
  "id": "urn:aggr:item:06d9c3aaa7546d481a0699904478bc1e7386a106",
  "isBasedOn": {
    "@id": "https://huggingface.co/blog/PaddlePaddle/pp-ocrv6"
  },
  "mainEntity": {
    "@id": "https://huggingface.co/blog/PaddlePaddle/pp-ocrv6",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/huggingface-co/2026-06-22-pp-ocrv6-on-hugging-face-50-language-ocr-from-1-5m-to-34-5m/#webpage"
    },
    "dateModified": "2026-06-22T13:18:56+00:00",
    "datePublished": "2026-06-22T13:18:56+00:00",
    "headline": "PP-OCRv6 on Hugging Face: 50-Language OCR from 1.5M to 34.5M Parameters",
    "image": {
      "@type": "ImageObject",
      "caption": null,
      "height": 90,
      "url": "https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/l156KP0e5PRyDrE4woHoM.jpeg",
      "width": 160
    },
    "timeRequired": "PT5M",
    "url": "https://huggingface.co/blog/PaddlePaddle/pp-ocrv6",
    "wordCount": 972
  },
  "name": "Archived snapshot: PP-OCRv6 on Hugging Face: 50-Language OCR from 1.5M to 34.5M Parameters",
  "preview": {
    "alt": null,
    "color": null,
    "height": 90,
    "placeholder": {
      "data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
      "hash": ""
    },
    "url": "https://cdn-uploads.huggingface.co/production/uploads/652b2e9166313ebb6197e706/l156KP0e5PRyDrE4woHoM.jpeg",
    "width": 160
  },
  "reading_minutes": 5,
  "replicated_at": null,
  "source": "huggingface-co",
  "source_name": "Hugging Face - Blog",
  "summary": null,
  "tags": [],
  "temporalCoverage": "2026-10-19T01:26:53.998049939+00:00",
  "title": "PP-OCRv6 on Hugging Face: 50-Language OCR from 1.5M to 34.5M Parameters",
  "url": "https://aggr.aymericbeaumet.com/items/huggingface-co/2026-06-22-pp-ocrv6-on-hugging-face-50-language-ocr-from-1-5m-to-34-5m/",
  "word_count": 972
}