PaddleOCR/README_ru.md
2025-06-26 18:00:21 +08:00

27 KiB
Raw Permalink Blame History

🚀 Введение

С момента своего первого выпуска PaddleOCR получил широкое признание в академических, промышленных и исследовательских кругах благодаря своим передовым алгоритмам и доказанной производительности в реальных приложениях. Он уже используется в таких популярных проектах с открытым исходным кодом, как Umi-OCR, OmniParser, MinerU и RAGFlow, что делает его предпочтительным инструментарием OCR для разработчиков по всему миру.

20 мая 2025 года команда PaddlePaddle представила PaddleOCR 3.0, полностью совместимый с официальным выпуском фреймворка PaddlePaddle 3.0. Это обновление еще больше повышает точность распознавания текста, добавляет поддержку распознавания нескольких типов текста и распознавания рукописного текста, а также удовлетворяет растущий спрос на приложения с большими моделями для высокоточного анализа сложных документов. В сочетании с ERNIE 4.5 Turbo он значительно улучшает точность извлечения ключевой информации. PaddleOCR 3.0 также вводит поддержку китайских гетерогенных AI ускорителей, таких как KUNLUNXIN и Ascend. Для получения полной документации по использованию, пожалуйста, обратитесь к Документации PaddleOCR 3.0.

Три новые ключевые функции в PaddleOCR 3.0:

  • Универсальная модель распознавания текста в любых сценах PP-OCRv5: Одна модель обрабатывает пять различных типов текста и сложный рукописный ввод. Общая точность распознавания увеличилась на 13 процентных пунктов по сравнению с предыдущим поколением. Онлайн-демо

  • Общее решение для парсинга документов PP-StructureV3: Обеспечивает высокоточный парсинг PDF-файлов с различными макетами и сценариями, превосходя многие решения с открытым и закрытым исходным кодом по результатам публичных тестов. Онлайн-демо

  • Интеллектуальное решение для понимания документов PP-ChatOCRv4: Нативно поддерживается большим моделью ERNIE 4.5 Turbo, достигая на 15 процентных пунктов более высокой точности, чем его предшественник. Онлайн-демо

Помимо предоставления выдающейся библиотеки моделей, PaddleOCR 3.0 также предлагает удобные инструменты, охватывающие обучение моделей, инференс и развертывание сервисов, чтобы разработчики могли быстро внедрять ИИ-приложения в производство.

Архитектура PaddleOCR

📣 Последние обновления

2025.06.26: Релиз PaddleOCR 3.0.3, включает:

  • Исправление ошибки: Исправлена проблема, из-за которой параметр enable_mkldnn не действовал, восстановлено поведение использования MKL-DNN для вывода на CPU по умолчанию.

🔥🔥2025.06.19: Релиз PaddleOCR 3.0.2, включает:

  • Новые возможности:

    • Источник загрузки по умолчанию изменен с BOS на HuggingFace. Пользователи также могут изменить переменную окружения PADDLE_PDX_MODEL_SOURCE на BOS, чтобы установить источник загрузки моделей обратно на Baidu Object Storage (BOS).
    • Добавлены примеры вызова сервисов для шести языков — C++, Java, Go, C#, Node.js и PHP — для пайплайнов, таких как PP-OCRv5, PP-StructureV3 и PP-ChatOCRv4.
    • Улучшен алгоритм сортировки разделов макета в пайплайне PP-StructureV3, улучшена логика сортировки для сложных вертикальных макетов для достижения лучших результатов.
    • Улучшена логика выбора модели: когда указан язык, но не указана версия модели, система автоматически выберет последнюю версию модели, поддерживающую этот язык.
    • Установлен верхний предел по умолчанию для размера кэша MKL-DNN для предотвращения неограниченного роста, а также предоставлена пользователям возможность настраивать емкость кэша.
    • Обновлены конфигурации по умолчанию для высокопроизводительного инференса для поддержки ускорения Paddle MKL-DNN и оптимизирована логика автоматического выбора конфигурации для более разумного выбора.
    • Скорректирована логика получения устройства по умолчанию для учета фактической поддержки вычислительных устройств установленным фреймворком Paddle, что делает поведение программы более интуитивным.
    • Добавлен пример для Android для PP-OCRv5. Подробности.
  • Исправления ошибок:

    • Исправлена проблема с некоторыми параметрами CLI в PP-StructureV3, которые не вступали в силу.
    • Решена проблема, из-за которой export_paddlex_config_to_yaml в некоторых случаях работала некорректно.
    • Исправлено несоответствие между фактическим поведением save_path и его описанием в документации.
    • Исправлены потенциальные ошибки многопоточности при использовании MKL-DNN в базовом развертывании сервиса.
    • Исправлены ошибки порядка каналов в предварительной обработке изображений для модели Latex-OCR.
    • Исправлены ошибки порядка каналов при сохранении визуализированных изображений в модуле распознавания текста.
    • Решены ошибки порядка каналов в визуализированных результатах таблиц в пайплайне PP-StructureV3.
    • Исправлена проблема переполнения при вычислении overlap_ratio в крайне особых обстоятельствах в пайплайне PP-StructureV3.
  • Улучшения документации:

    • Обновлено описание параметра enable_mkldnn в документации, чтобы оно точно отражало фактическое поведение программы.
    • Исправлены ошибки в документации, касающиеся параметров lang и ocr_version.
    • Добавлены инструкции по экспорту файлов конфигурации производственной линии через CLI.
    • Исправлены отсутствующие столбцы в таблице данных о производительности для PP-OCRv5.
    • Уточнены метрики бенчмарков для PP-StructureV3 для различных конфигураций.
  • Прочее:

    • Ослаблены ограничения версий для зависимостей, таких как numpy и pandas, восстановлена поддержка Python 3.12.
История обновлений

🔥🔥 2025.06.05: Релиз PaddleOCR 3.0.1, включает:

  • Оптимизация некоторых моделей и их конфигураций:

    • Обновлена конфигурация модели по умолчанию для PP-OCRv5: модели обнаружения и распознавания изменены с mobile на server. Для улучшения производительности по умолчанию в большинстве сценариев параметр limit_side_len в конфигурации изменен с 736 на 64.
    • Добавлена новая модель классификации ориентации строк текста PP-LCNet_x1_0_textline_ori с точностью 99.42%. Классификатор ориентации строк текста по умолчанию для пайплайнов OCR, PP-StructureV3 и PP-ChatOCRv4 обновлен до этой модели.
    • Оптимизирована модель классификации ориентации строк текста PP-LCNet_x0_25_textline_ori, точность улучшена на 3.3 процентных пункта до текущего значения 98.85%.
  • Оптимизации и исправления некоторых проблем версии 3.0.0, подробности

🔥🔥2025.05.20: Официальный релиз PaddleOCR v3.0, включающий:

  • PP-OCRv5: Высокоточная модель распознавания текста для всех сценариев - Мгновенное извлечение текста из изображений/PDF.

    1. 🌐 Поддержка пяти типов текста в одной модели - Бесшовная обработка упрощенного китайского, традиционного китайского, пиньиня, английского и японского в рамках одной модели.
    2. ✍️ Улучшенное распознавание рукописного текста: Значительно лучше справляется со сложными слитными и нестандартными почерками.
    3. 🎯 Прирост точности на 13 процентных пунктов по сравнению с PP-OCRv4, достижение самых современных результатов в различных реальных сценариях.
  • PP-StructureV3: Универсальный парсинг документов Используйте SOTA парсинг изображений/PDF для реальных сценариев!

    1. 🧮 Высокоточный парсинг PDF в различных сценариях, опережающий как открытые, так и закрытые решения на бенчмарке OmniDocBench.
    2. 🧠 Специализированные возможности включают распознавание печатей, преобразование диаграмм в таблицы, распознавание таблиц с вложенными формулами/изображениями, парсинг документов с вертикальным текстом и анализ сложных структур таблиц.
  • PP-ChatOCRv4: Интеллектуальное понимание документов Извлекайте ключевую информацию, а не просто текст из изображений/PDF.

    1. 🔥 Прирост точности на 15 процентных пунктов в извлечении ключевой информации из файлов PDF/PNG/JPG по сравнению с предыдущим поколением.
    2. 💻 Нативная поддержка ERNIE 4.5 Turbo, с совместимостью для развертывания больших моделей через PaddleNLP, Ollama, vLLM и другие.
    3. 🤝 Интегрирован PP-DocBee2, обеспечивающий извлечение и понимание печатного текста, рукописного текста, печатей, таблиц, диаграмм и других общих элементов в сложных документах.

История обновлений

Быстрый старт

1. Запустить онлайн-демо

AI Studio AI Studio AI Studio

2. Установка

Установите PaddlePaddle, следуя Руководству по установке, после чего установите инструментарий PaddleOCR.

# Установить paddleocr
pip install paddleocr

3. Запуск инференса через CLI

# Запустить инференс PP-OCRv5
paddleocr ocr -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png --use_doc_orientation_classify False --use_doc_unwarping False --use_textline_orientation False  

# Запустить инференс PP-StructureV3
paddleocr pp_structurev3 -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pp_structure_v3_demo.png --use_doc_orientation_classify False --use_doc_unwarping False

# Сначала получите Qianfan API Key, а затем запустите инференс PP-ChatOCRv4
paddleocr pp_chatocrv4_doc -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/vehicle_certificate-1.png -k 驾驶室准乘人数 --qianfan_api_key your_api_key --use_doc_orientation_classify False --use_doc_unwarping False 

# Получить больше информации о "paddleocr ocr"
paddleocr ocr --help

4. Запуск инференса через API

4.1 Пример для PP-OCRv5

# Инициализация экземпляра PaddleOCR
from paddleocr import PaddleOCR
ocr = PaddleOCR(
    use_doc_orientation_classify=False,
    use_doc_unwarping=False,
    use_textline_orientation=False)

# Запуск инференса OCR на примере изображения
result = ocr.predict(
    input="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png")

# Визуализация результатов и сохранение в формате JSON
for res in result:
    res.print()
    res.save_to_img("output")
    res.save_to_json("output")
4.2 Пример для PP-StructureV3
from pathlib import Path
from paddleocr import PPStructureV3

pipeline = PPStructureV3(
    use_doc_orientation_classify=False,
    use_doc_unwarping=False
)

# Для изображений
output = pipeline.predict(
    input="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pp_structure_v3_demo.png",
)

# Визуализация результатов и сохранение в формате JSON
for res in output:
    res.print() 
    res.save_to_json(save_path="output") 
    res.save_to_markdown(save_path="output")           
4.3 Пример для PP-ChatOCRv4
from paddleocr import PPChatOCRv4Doc

chat_bot_config = {
    "module_name": "chat_bot",
    "model_name": "ernie-3.5-8k",
    "base_url": "https://qianfan.baidubce.com/v2",
    "api_type": "openai",
    "api_key": "api_key",  # ваш api_key
}

retriever_config = {
    "module_name": "retriever",
    "model_name": "embedding-v1",
    "base_url": "https://qianfan.baidubce.com/v2",
    "api_type": "qianfan",
    "api_key": "api_key",  # ваш api_key
}

pipeline = PPChatOCRv4Doc(
    use_doc_orientation_classify=False,
    use_doc_unwarping=False
)

visual_predict_res = pipeline.visual_predict(
    input="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/vehicle_certificate-1.png",
    use_common_ocr=True,
    use_seal_recognition=True,
    use_table_recognition=True,
)

mllm_predict_info = None
use_mllm = False
# Если используется мультимодальная большая модель, необходимо запустить локальный сервис mllm. Вы можете обратиться к документации: https://github.com/PaddlePaddle/PaddleX/blob/release/3.0/docs/pipeline_usage/tutorials/vlm_pipelines/doc_understanding.en.md для выполнения развертывания и обновления конфигурации mllm_chat_bot_config.
if use_mllm:
    mllm_chat_bot_config = {
        "module_name": "chat_bot",
        "model_name": "PP-DocBee",
        "base_url": "http://127.0.0.1:8080/",  # URL вашего локального сервиса mllm
        "api_type": "openai",
        "api_key": "api_key",  # ваш api_key
    }

    mllm_predict_res = pipeline.mllm_pred(
        input="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/vehicle_certificate-1.png",
        key_list=["驾驶室准乘人数"],
        mllm_chat_bot_config=mllm_chat_bot_config,
    )
    mllm_predict_info = mllm_predict_res["mllm_res"]

visual_info_list = []
for res in visual_predict_res:
    visual_info_list.append(res["visual_info"])
    layout_parsing_result = res["layout_parsing_result"]

vector_info = pipeline.build_vector(
    visual_info_list, flag_save_bytes_vector=True, retriever_config=retriever_config
)
chat_result = pipeline.chat(
    key_list=["驾驶室准乘人数"],
    visual_info=visual_info_list,
    vector_info=vector_info,
    mllm_predict_info=mllm_predict_info,
    chat_bot_config=chat_bot_config,
    retriever_config=retriever_config,
)
print(chat_result)

5. Китайские гетерогенные ИИ-ускорители

⛰️ Продвинутые руководства

🔄 Краткий обзор результатов выполнения

Демо PP-OCRv5

Демо PP-StructureV3

👩‍👩‍👧‍👦 Сообщество

Официальный аккаунт PaddlePaddle в WeChat Присоединяйтесь к группе для технических обсуждений

😃 Потрясающие проекты, использующие PaddleOCR

PaddleOCR не был бы там, где он есть сегодня, без своего невероятного сообщества! 💗 Огромное спасибо всем нашим давним партнерам, новым сотрудникам и всем, кто вложил свою страсть в PaddleOCR — независимо от того, назвали мы вас или нет. Ваша поддержка разжигает наш огонь!

Название проекта Описание
RAGFlow RAG-движок, основанный на глубоком понимании документов.
MinerU Инструмент для преобразования документов различных типов в Markdown
Umi-OCR Бесплатное офлайн-программное обеспечение для пакетного OCR с открытым исходным кодом.
OmniParser Инструмент парсинга экрана для GUI-агента, основанного исключительно на компьютерном зрении.
QAnything Система вопросов и ответов на основе любого контента.
PDF-Extract-Kit Мощный инструментарий с открытым исходным кодом, предназначенный для эффективного извлечения высококачественного контента из сложных и разнообразных PDF-документов.
Dango-Translator Распознает текст на экране, переводит его и отображает результаты перевода в режиме реального времени.
Узнать больше о проектах Больше проектов на основе PaddleOCR

👩‍👩‍👧‍👦 Контрибьюторы

🌟 Star

Star History Chart

📄 Лицензия

Этот проект выпущен под лицензией Apache 2.0.

🎓 Цитирование

@misc{paddleocr2020,
title={PaddleOCR, Awesome multilingual OCR toolkits based on PaddlePaddle.},
author={PaddlePaddle Authors},
howpublished = {\url{https://github.com/PaddlePaddle/PaddleOCR}},
year={2020}
}