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

OSCHINA-MIRROR/cyahua-cnocr

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_en.md 24 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 17:26 40980c3

CnOCR

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

  • [Китайский текст] | English

CnOCR

Tech должен служить людям, а не порабощать их! Пожалуйста, не используйте этот проект для цензуры текста!

[Обновление 2023.12.24]: Выпуск версии V2.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.

Для получения более подробной информации см.: Breezedeus.com | CnOCR V2.3 New Release: Better, More, and Larger Models (https://www.breezedeus.com/article/cnocr-v2.3-better-more).

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

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:

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

Перевод:

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

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)

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

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

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

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

from cnocr import 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' для распознавания.

from cnocr import 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() для распознавания. Это экономит время на обнаружение текста и будет более чем в два раза быстрее.

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

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

from cnocr import CnOcr

img_fp = './docs/examples/helloworld.jpg'
ocr = CnOcr()
out = ocr.ocr_for_single_line(img_fp)
print(out)

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

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

Установка

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

$ 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.

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

Предупреждение Если вы никогда не устанавливали на свой компьютер пакеты Python PyTorch и OpenCV, то при первой установке могут возникнуть проблемы, но обычно это распространённые проблемы, которые можно решить с помощью Baidu/Google.

Docker Image

Вы можете напрямую загрузить образ с установленным CnOCR из Docker Hub: Docker Hub.

$ docker pull breezedeus/cnocr:latest

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

Предобученные модели

Предобученные детекционные модели

Подробнее см. CnSTD.

det_model_name PyTorch Version ONNX Version Model original source Model File Size Supported Language Whether to support vertical text detection
en_PP-OCRv3_det X ppocr 2.3 M English、Numbers
db_shufflenet_v2 X cnocr 18 M Simplified Chinese, Traditional Chinese, English, Numbers
db_shufflenet_v2_small X cnocr 12 M Simplified Chinese, Traditional Chinese, English, Numbers
db_shufflenet_v2_tiny X cnocr 7.5 M Simplified Chinese, Traditional Chinese, English, Numbers
db_mobilenet_v3 X cnocr 16 M Simplified Chinese, Traditional Chinese, English, Numbers
db_mobilenet_v3_small X cnocr 7.9 M Simplified Chinese, Traditional Chinese, English, Numbers
db_resnet34 X cnocr 86 M Simplified Chinese, Traditional Chinese, English, Numbers
db_resnet18 X cnocr 47 M Simplified Chinese, Traditional Chinese, English, Numbers
ch_PP-OCRv3_det X ppocr 2.3 M Simplified Chinese, Traditional Chinese, English, Numbers
ch_PP-OCRv2_det X ppocr 2.2 M Simplified Chinese, Traditional Chinese, English, Numbers

Предобученные распознавательные модели

По сравнению с версиями CnOCR V2.2.* большинство моделей в V2.3 были переобучены и дообучены, предлагая более высокую точность, чем старые версии. Кроме того, были добавлены две серии моделей с большим объёмом параметров:

  • *-densenet_lite_246-gru_base: В настоящее время доступно для членов Knowledge Planet CnOCR/CnSTD Private Group, впоследствии будет открыто.
  • *-densenet_lite_666-gru_large: Профессиональные модели, доступны для использования после покупки. Ссылка для покупки: https://ocr.lemonsqueezy.com.

Модели в V2.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.

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

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

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 )

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

1
https://api.gitlife.ru/oschina-mirror/cyahua-cnocr.git
git@api.gitlife.ru:oschina-mirror/cyahua-cnocr.git
oschina-mirror
cyahua-cnocr
cyahua-cnocr
master