1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/breezedeus-cnocr

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README_en.md

CnOCR

Оптическое распознавание символов (OCR) — набор инструментов

  • [Обновление от 24.12.2023]: Выпуск версии 2.3

Основные изменения:

  • Все модели были переобучены, что обеспечивает более высокую точность по сравнению с предыдущей версией.
  • Модели разделены на несколько типов в зависимости от сценариев использования (см. раздел «Предобученные модели распознавания»):
    • scene: для изображений сцен, подходит для распознавания текста на обычных фотографиях. Модели этой категории начинаются с scene-, например, модель scene-densenet_lite_136-gru.
    • doc: для изображений документов, подходит для распознавания текста в обычных скриншотах документов, таких как отсканированные страницы книг. Модели этой категории начинаются с doc-, например, модель doc-densenet_lite_136-gru.
    • number: специально для распознавания только чисел (может распознавать только десять цифр 0~9), подходит для таких сценариев, как номера банковских карт, идентификационные номера и т. д. Модели этой категории начинаются с number-, например, модель number-densenet_lite_136-gru.
    • general: для общих сценариев, подходит для изображений без явного предпочтения. Модели этой категории не имеют специального префикса и сохраняют ту же схему именования, что и старые версии, например, модель densenet_lite_136-gru.

    Примечание ⚠️: Вышеприведённые описания приведены только для справки. Рекомендуется выбирать модели на основе фактической производительности.

  • Были добавлены две большие серии моделей:
    • *-densenet_lite_246-gru_base: первоначально доступны для участников частной группы Planet of Knowledge CnOCR/CnSTD (https://t.zsxq.com/FEYZRJQ), будут открыты для бесплатного использования через месяц.
    • *-densenet_lite_666-gru_large: профессиональные модели, доступные после покупки. Ссылку на покупку можно найти на сайте https://ocr.lemonsqueezy.com.

Для получения более подробной информации см.: CnOCR V2.3 New Release: Better, More, and Larger Models | Breezedeus.com.

CnOCR — это набор инструментов для оптического распознавания символов (OCR). CnOCR: распознавание текста на разных языках

CnOCR поддерживает распознавание распространённых символов на английском языке и цифр, упрощённом китайском, традиционном китайском (некоторые модели) и распознавание вертикального текста. В распоряжении имеется более 20 хорошо обученных моделей для различных сценариев применения, которые можно использовать сразу после установки. Кроме того, CnOCR предоставляет простые команды обучения для пользователей, чтобы они могли обучать собственные модели. Добро пожаловать в группу контактов WeChat.

Автор также ведёт закрытую группу Planet of Knowledge CnOCR/CnSTD, где вопросы с большей вероятностью получат быстрые ответы от автора. Вы можете присоединиться. Участники Knowledge Planet могут пользоваться следующими преимуществами:

  • доступ к бесплатным непубличным платным моделям;
  • скидка 20% на покупку всех остальных платных моделей;
  • быстрые ответы автора на различные трудности, возникающие во время использования;
  • автор предлагает два бесплатных обучающих занятия в месяц с использованием уникальных данных;
  • группа будет постоянно выпускать эксклюзивные материалы, связанные с CnOCR/CnSTD;
  • группа регулярно публикует новейшие исследовательские материалы, связанные с OCR, STD, CV и многим другим.

Документация

См. онлайн-документацию CnOCR на китайском языке.

Использование

Начиная с версии V2.2, CnOCR внутренне использует механизм обнаружения текста CnSTD для обнаружения и позиционирования текста. Таким образом, CnOCR V2.2 может распознавать не только типографически простой печатный текст, такой как скриншоты, отсканированные копии и т. д., но и общий текст на изображениях.

Вот несколько примеров использования для разных сценариев.

Примеры использования для разных сценариев

Общее распознавание изображений

Просто используйте значения по умолчанию для всех параметров. Если вы обнаружите, что результат недостаточно хорош, попробуйте разные параметры, чтобы увидеть эффект, и обычно вы получите более желаемую точность.

from cnocr import CnOcr

img_fp = './docs/examples/huochepiao.jpeg'
ocr = CnOcr()  # Используйте значения по умолчанию для всех параметров
out = ocr.ocr(img_fp)

print(out)

Результаты распознавания:

Распознавание билетов на поезд

Распознавание английского языка

Хотя китайские модели обнаружения и распознавания также могут распознавать английский язык, детекторы и распознаватели, обученные специально для английских текстов, как правило, более точны. Для сценариев использования только на английском рекомендуется использовать модель обнаружения английского языка det_model_name='en_PP-OCRv3_det' и модель распознавания английского языка rec_model_name='en_PP-OCRv3' из PaddleOCR (также называемого ppocr).

from cnocr import CnOcr

img_fp = './docs/examples/en_book1.jpeg'
ocr = CnOcr(det_model_name='en_PP-OCRv3_det', rec_model_name='en_PP-OCRv3')
out = ocr.ocr(img_fp)

print(out)

Результаты распознавания:

Распознавание английских текстов

Распознавание типографических скриншотов

Для типографически простых текстовых изображений, таких как скриншоты, сканированные изображения и т.д., вы можете использовать det_model_name='naive_det', что эквивалентно использованию простых правил ветвления вместо модели обнаружения текста.

Примечание

det_model_name='naive_det' эквивалентен версиям CnOCR до V2.2 (V2.0., V2.1.).

Самым большим преимуществом использования det_model_name='naive_det' является то, что речь идёт быстро, а недостатком — то, что она придирчива к изображениям. Как определить, следует ли вам использовать модель обнаружения 'naive_det'? Самый простой способ — взять изображение вашего приложения и попробовать эффект. Текст запроса:

it works well, use it, if not, don't.

from cnocr import CnOcr

img_fp = './docs/examples/multi-line_cn1.png'
ocr = CnOcr(det_model_name='naive_det') 
out = ocr.ocr(img_fp)

print(out)

Recognition results:

图片 OCR结果
docs/examples/multi-line_cn1.png 网络支付并无本质的区别,因为
每一个手机号码和邮件地址背后
都会对应着一个账户--这个账
户可以是信用卡账户、借记卡账
户,也包括邮局汇款、手机代
收、电话代收、预付费卡和点卡
等多种形式。

Перевод текста:

«Всё работает хорошо, используйте это, если нет — не надо».

из cnocr импортировать CnOcr

img_fp = "./docs/examples/multi-line_cn1.png"
ocr = CnOcr (det_model_name = 'naive_det')
out = ocr.ocr (img_fp)

печать (выход)

Результаты распознавания:

Изображение Результаты распознавания
Docs/examples/multi-line_cn1.png Платёж через сеть по сути ничем не отличается, потому что
за каждым номером телефона и адресом электронной почты
стоит один аккаунт — этот аккаунт может быть
аккаунтом кредитной карты, аккаунтом дебетовой карты,
а также включает почтовый перевод, мобильный сбор,
телефонный сбор, предоплаченную карту и дисконтную карту
и другие формы.

Распознавание вертикального текста

Для распознавания используется китайская модель rec_model_name='ch_PP-OCRv3' из ppocr.

из cnocr импортировать CnOcr

img_fp = './docs/examples/shupai.png'
ocr = CnOcr(rec_model_name='ch_PP-OCRv3')
out = ocr.ocr(img_fp)

print(out)

Результаты распознавания:

вертикальное распознавание текста

Традиционное китайское распознавание

Используйте традиционную китайскую модель распознавания из ppocr rec_model_name='english_cht_PP-OCRv3' для распознавания.

из cnocr импортировать CnOcr

img_fp = './docs/examples/fanti.jpg'
ocr = CnOcr(rec_model_name='chinese_cht_PP-OCRv3') # использовать традиционную китайскую модель распознавания
out = ocr.ocr(img_fp)

print(out)

При использовании этой модели обратите внимание на следующие проблемы:

  • Точность распознавания средняя и не очень хорошая.
  • Распознавание пунктуации, английского языка и цифр не очень хорошее, за исключением традиционных китайских иероглифов.
  • Эта модель не поддерживает распознавание вертикального текста.
традиционное китайское распознавание

Распознавание однострочного текстового изображения

Если очевидно, что изображение, которое нужно распознать, представляет собой однострочное текстовое изображение (как показано ниже), вы можете использовать функцию класса CnOcr.ocr_for_single_line() для распознавания. Это экономит время на обнаружение текста и будет более чем в два раза быстрее.

распознавание однострочных текстовых изображений

Код выглядит следующим образом:

из cnocr импортировать CnOcr

img_fp = './docs/examples/helloworld.jpg'
ocr = CnOcr()
out = ocr.ocr_for_single_line(img_fp)
печать (выход)

Другие приложения

  • Распознавание скриншота приложения вакцины
Распознавание скриншотов приложения вакцины
  • Распознавание удостоверения личности
Распознавание удостоверений личности
  • Распознавание ресторанного билета
Распознавание ресторанных билетов

Установка

Что ж, одной строки команды достаточно, если всё пройдёт хорошо.

$ pip install cnocr[ort-cpu]

Если вы используете среду GPU с моделью ONNX, установите с помощью следующей команды:

$ pip install cnocr[ort-gpu]

Если вы хотите обучить новые модели на своих данных, установите с помощью следующей команды:

$ pip install cnocr[dev]

Если установка идёт медленно, вы можете указать внутренний источник установки, например, используя источник Алиюнь:

$ pip install cnocr -i https://mirrors.aliyun.com/pypi/simple

Примечание

Пожалуйста, используйте Python3 (3.6 и выше должны работать), я не проверял, нормально ли это под Python2.

Дополнительные инструкции можно найти в документации по установке (на китайском языке).

Предупреждение Распознавание текста на обычных скриншотах документов, таких как отсканированные страницы книг. Модели в этой категории начинаются с doc-, например, модель doc-densenet_lite_136-gru.

  • number: Специально для распознавания только чисел (способна распознавать только десять цифр от 0 до 9), подходит для таких сценариев, как номера банковских карт, идентификационные номера и т. д. Модели в этой категории начинаются с number-, например, модель number-densenet_lite_136-gru.
  • general: Для общих сценариев, подходит для изображений без явного предпочтения. Модели в этой категории не имеют специального префикса и сохраняют то же соглашение об именах, что и более старые версии, например, модель densenet_lite_136-gru.

Примечание ⚠️: Приведённые выше описания предназначены только для справки. Рекомендуется выбирать модели на основе фактической производительности.

Для получения дополнительной информации см.: Доступные модели.

rec_model_name PyTorch Version ONNX Version Model original source Model File Size Supported Language Whether to support vertical text recognition
densenet_lite_136-gru 🆕 cnocr 12 M упрощённый китайский, английский, числа X
scene-densenet_lite_136-gru 🆕 cnocr 12 M упрощённый китайский, английский, числа X
doc-densenet_lite_136-gru 🆕 cnocr 12 M упрощённый китайский, английский, числа X
densenet_lite_246-gru_base 🆕
(Planet Members Only)
cnocr 25 M упрощённый китайский, английский, числа X
scene-densenet_lite_246-gru_base 🆕
(Planet Members Only)
cnocr 25 M упрощённый китайский, английский, числа X
doc-densenet_lite_246-gru_base 🆕
(Planet Members Only)
cnocr 25 M упрощённый китайский, английский, числа X
densenet_lite_666-gru_large 🆕
(Purchase Link)
cnocr 82 M упрощённый китайский, английский, числа X
scene-densenet_lite_666-gru_large 🆕
(Purchase Link)
cnocr 82 M упрощённый китайский, английский, числа X
doc-densenet_lite_666-gru_large 🆕
(Purchase Link)
cnocr 82 M упрощённый китайский, английский, числа X
number-densenet_lite_136-fc 🆕 cnocr 2.7 M Только цифры (содержит только десять цифр 0~9) X
number-densenet_lite_136-gru 🆕
(Planet Members Only)
cnocr 5.5 M Только цифры (содержит только десять цифр 0~9) X
number-densenet_lite_666-gru_large 🆕 <br Будущая работа:
  • Поддержка изображений, содержащих несколько строк текста (сделано).
  • Поддержка модели crnn для предсказания переменной длины, что повышает гибкость (с версии V1.0.0).
  • Доработка тестовых случаев (в процессе).
  • Исправление ошибок (код всё ещё беспорядочный) (в процессе).
  • Распознавание пробела (с версии V1.1.0).
  • Использование новых моделей, таких как DenseNet, для дальнейшего повышения точности распознавания (с версии V1.1.0).
  • Оптимизация обучающего набора данных для удаления необоснованных образцов; на основе этого переобучение каждой модели.
  • Переход от архитектуры MXNet к PyTorch (с версии V2.0.0).
  • Обучение более эффективных моделей на основе PyTorch.
  • Распознавание текста в формате столбцов (с версии V2.1.2).
  • Интеграция с CnSTD (с версии V2.2).

Будущая оптимизация точности модели. Поддержка большего количества сценариев применения, таких как распознавание формул, распознавание таблиц, анализ макета и т. д.

Чашка кофе для автора: Нелегко поддерживать и развивать проект, поэтому, если он вам полезен, рассмотрите возможность предложить автору чашку кофе 🥤.


Официальная кодовая база: https://github.com/breezedeus/cnocr. Пожалуйста, цитируйте её правильно.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

CnOCR: китайский и английский OCR Python-пакеты на основе PyTorch/MXNet. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/breezedeus-cnocr.git
git@api.gitlife.ru:oschina-mirror/breezedeus-cnocr.git
oschina-mirror
breezedeus-cnocr
breezedeus-cnocr
master