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.Для получения более подробной информации см.: 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:
Изображение | Результат распознавания |
---|---|
![]() |
Нет существенной разницы между сетевыми платежами, потому что за каждым номером мобильного телефона и адресом электронной почты стоит один аккаунт — этот аккаунт может быть аккаунтом кредитной карты, аккаунтом дебетовой карты, а также включать в себя банковский перевод, сбор мобильных платежей, сбор телефонных платежей, предоплаченную карту и дисконтную карту и другие формы. |
Перевод:
Всё работает хорошо, используйте это, если нет — не надо.
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)
Результаты распознавания:
Изображение | Результат распознавания |
---|---|
![]() |
Не существует принципиальной разницы между онлайн-платежами, поскольку за каждым мобильным номером и почтовым адресом стоит учётная запись — эта учётная запись может быть кредитной картой, дебетовой картой, а также включает почтовый перевод, мобильный сбор, телефонный сбор, предоплаченные карты и дисконтные карты и другие виды. |
Для распознавания используется китайская модель распознавания 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)
Ну, одной строки команды достаточно, если всё пройдёт хорошо.
$ 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.
Вы можете напрямую загрузить образ с установленным 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 Будущая работа: |
Чашка кофе для автора:
Поддерживать и развивать проект нелегко, поэтому, если он вам полезен, рассмотрите возможность угостить автора чашкой кофе 🥤.
Официальная кодовая база: https://github.com/breezedeus/cnocr. Пожалуйста, цитируйте её правильно.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )