
Готовый к использованию OCR с поддержкой более 80 языков и всех популярных систем письменности, включая латиницу, китайскую, арабскую, деванагари, кириллицу и др.
Готовая к использованию OCR с поддержкой более 80 языков и всех популярных систем письменности, включая: латиницу, китайский, арабский, деванагари, кириллицу и др.
Попробуйте демо на нашем сайте
Интегрировано в Huggingface Spaces 🤗 с использованием Gradio. Попробуйте веб-демо:
24 сентября 2024 — Версия 1.7.2



Установка с помощью pip
Для последнего стабильного выпуска:
pip install easyocr
Для последней разрабатываемой версии:
pip install git+https://github.com/JaidedAI/EasyOCR.git
Примечание 1: Для Windows сначала установите torch и torchvision, следуя официальным инструкциям здесь https://pytorch.org. На сайте pytorch обязательно выберите правильную версию CUDA, которая у вас установлена. Если вы планируете работать только в режиме CPU, выберите CUDA = None.
Примечание 2: Мы также предоставляем Dockerfile здесь.
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
result = reader.readtext('chinese.jpg')
Вывод будет в виде списка, каждый элемент которого представляет ограничивающую рамку, распознанный текст и уровень уверенности соответственно.
[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
Примечание 1: ['ch_sim','en'] — это список языков, которые вы хотите распознавать. Можно передать
несколько языков одновременно, но не все языки могут использоваться вместе.
Английский совместим с любым языком, а языки с общими символами обычно совместимы друг с другом.
Примечание 2: Вместо пути к файлу chinese.jpg можно также передать объект изображения OpenCV (массив numpy) или файл изображения в виде байтов. URL на исходное изображение также допустим.
Примечание 3: Строка reader = easyocr.Reader(['ch_sim','en']) предназначена для загрузки модели в память. Это занимает некоторое время, но выполнить её нужно только один раз.
Вы также можете установить detail=0 для более простого вывода.
reader.readtext('chinese.jpg', detail = 0)
Результат:
['愚园路', '西', '东', '315', '309', 'Yuyuan Rd.', 'W', 'E']
Веса модели для выбранного языка будут загружены автоматически, или вы можете скачать их вручную из модельного хаба и поместить в папку '~/.EasyOCR/model'
Если у вас нет GPU или объём памяти GPU мал, вы можете запустить модель только в режиме CPU, добавив gpu=False.
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
Для получения дополнительной информации читайте руководство и документацию по API.
$ easyocr -l ch_sim en -f chinese.jpg --detail=1 --gpu=True
Для модели распознавания читайте здесь.
Для модели обнаружения (CRAFT) читайте здесь.
reader = easyocr.Reader(['en'], detection='DB', recognition = 'Transformer')
Идея состоит в том, чтобы можно было подключать любую современную модель к EasyOCR. Есть много гениев, пытающихся создать лучшие модели обнаружения/распознавания, но мы не пытаемся быть гениями здесь. Мы просто хотим сделать их работы быстро доступными для публики ... бесплатно. (что ж, мы верим, что большинство гениев хотят, чтобы их работа оказала положительное влияние как можно быстрее и масштабнее) Конвейер должен выглядеть примерно как диаграмма ниже. Серые слоты — это заполнители для сменных голубых модулей.

Этот проект основан на исследованиях и коде из нескольких статей и открытых репозиториев.
Вся работа глубокого обучения выполняется на базе Pytorch. ❤️
Для обнаружения используется алгоритм CRAFT из этого официального репозитория и их статьи (Спасибо @YoungminBaek из @clovaai). Мы также используем их предобученную модель. Обучающий скрипт предоставлен @gmuffiness.
Модель распознавания — это CRNN (статья). Она состоит из 3 основных компонентов: извлечение признаков (сейчас мы используем Resnet) и VGG, разметка последовательностей (LSTM) и декодирование (CTC). Конвейер обучения для распознавания — это модифицированная версия фреймворка deep-text-recognition-benchmark. (Спасибо @ku21fan из @clovaai) Этот репозиторий — настоящий самородок, заслуживающий большего признания.
Код поиска луча (beam search) основан на этом репозитории и его блоге. (Спасибо @githubharald)
Синтез данных основан на TextRecognitionDataGenerator. (Спасибо @Belval)
И хорошая статья о CTC от distill.pub здесь.
Давайте вместе продвигать человечество вперёд, делая ИИ доступным каждому!
3 способа внести вклад:
Программист: Пожалуйста, отправляйте PR для небольших ошибок/улучшений. Для более крупных сначала обсудите с нами, открыв issue. Есть список возможных ошибок/улучшений, помеченных 'PR WELCOME'.
Пользователь: Расскажите нам, как EasyOCR приносит пользу вам/вашей организации, чтобы стимулировать дальнейшее развитие. Также публикуйте примеры ошибок в разделе Issue, чтобы помочь улучшить будущие модели.
Технический лидер/Гуру: Если вы нашли эту библиотеку полезной, пожалуйста, распространите информацию! (См. пост Янна ЛеКуна о EasyOCR)
Чтобы запросить новый язык, нам нужно, чтобы вы отправили PR со следующими 2 файлами:
Если в вашем языке есть уникальные особенности (например, 1. арабский: символы меняют форму при соединении друг с другом + написание справа налево 2. тайский: некоторые символы должны быть над линией, а некоторые — под ней), пожалуйста, просветите нас в меру своих возможностей и/или дайте полезные ссылки. Важно уделить внимание деталям, чтобы создать систему, которая действительно работает.
Наконец, пожалуйста, поймите, что наш приоритет будет отдан популярным языкам или наборам языков, которые имеют большую общую часть символов (также сообщите нам, если это относится к вашему языку). На разработку новой модели у нас уходит не менее недели, поэтому вам, возможно, придётся подождать выхода новой модели.
См. Список языков в разработке
Из-за ограниченных ресурсов проблема, возраст которой превышает 6 месяцев, будет автоматически закрыта. Пожалуйста, откройте проблему заново, если она критична.
Для корпоративной поддержки Jaided AI предлагает полный спектр услуг для заказных OCR/AI-систем: от внедрения, обучения/дообучения до развертывания. Нажмите здесь, чтобы связаться с нами.