CnOCR
Оптическое распознавание символов (OCR) — набор инструментов
Основные изменения:
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 могут пользоваться следующими преимуществами:
См. онлайн-документацию 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结果 |
---|---|
![]() |
网络支付并无本质的区别,因为 每一个手机号码和邮件地址背后 都会对应着一个账户--这个账 户可以是信用卡账户、借记卡账 户,也包括邮局汇款、手机代 收、电话代收、预付费卡和点卡 等多种形式。 |
Перевод текста:
«Всё работает хорошо, используйте это, если нет — не надо».
из cnocr импортировать CnOcr
img_fp = "./docs/examples/multi-line_cn1.png"
ocr = CnOcr (det_model_name = 'naive_det')
out = ocr.ocr (img_fp)
печать (выход)
Результаты распознавания:
Изображение | Результаты распознавания |
---|---|
![]() |
Платёж через сеть по сути ничем не отличается, потому что за каждым номером телефона и адресом электронной почты стоит один аккаунт — этот аккаунт может быть аккаунтом кредитной карты, аккаунтом дебетовой карты, а также включает почтовый перевод, мобильный сбор, телефонный сбор, предоплаченную карту и дисконтную карту и другие формы. |
Для распознавания используется китайская модель 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 Будущая работа: |
Будущая оптимизация точности модели. Поддержка большего количества сценариев применения, таких как распознавание формул, распознавание таблиц, анализ макета и т. д.
Чашка кофе для автора: Нелегко поддерживать и развивать проект, поэтому, если он вам полезен, рассмотрите возможность предложить автору чашку кофе 🥤.
Официальная кодовая база: https://github.com/breezedeus/cnocr. Пожалуйста, цитируйте её правильно.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )