Что делать если вы столкнулись с некачественным сканом?
4530 просмотров
PyTesseract — это пакет python для разработки OCR
OCR или же Оптическое распознавание символов (англ. Optical Character Recognition – OCR) – это технология, которая позволяет преобразовывать различные типы документов, такие как отсканированные документы, PDF-файлы или фото с цифровой камеры, в редактируемые форматы с возможностью поиска.
Так же, для задачи распознавания PDF-сканов подходят модули и библиотеки PDF для Python. Таких библиотек большое множество, для примера рассмотрим PyMuPDF.
PyTesseract
Первым делом, как и всегда, импортируем все необходимые библиотеки и так же указываем путь к cmd PyTesseract:
- Cv2(OpenCV) – тоже библиотека компьютерного зрения и машинного обучения, будем применять её для перевода в градации серого и в чёрно-белое изображение,
- PyTesseract,
- pdf2image – библиотека для конвертации pdf в формат изображения.
import cv2 import pytesseract from pdf2image import convert_from_path
Программы распознавания текста
Следующим шагом конвертируем PDF в JPG. Обращаемся к нулевому элементу, т.к. в нашем документе несколько страниц, а нам не нужны все.
Далее с помощью библиотеки cv2 считываем получившееся изображение и переводим в другую цветовую градацию. С помощью PyTesseract в команде print преобразуем картинку в текст и выводим в консоль.
imgcv=cv2.imread(‘out.jpg’) imgcv=cv2.cvtColor(imgcv, cv2.COLOR_BGR2RGB) print(pytesseract.image_to_string(imgcv, lang=’rus’))
Для примера мы брали скан образца заполнения загран. паспорта.
Эта библиотека известна своей высокой производительностью и высоким качеством рендеринга. Отлично подходит для перевода больших PDF документов, как, например, в нашем случае — PDF учебника.
Так же импортируем библиотеки, но в этом примере нам потребуется только одна – PyMuPDF, импортируется как fitz.
import fitz
Теперь открываем сам PDF файл и в цикле по его страницам получаем и выводим текст.
Текст распознан, сохранены абзацы, учебник размером в 400 страниц был преобразован в текст за 2 секунды.
PyTesseract мощный инструмент компьютерного зрения, может распознавать текст с изображений многих форматов (например, текст на дорожном знаке). Имеет возможность изменения параметров, что может повысить точность распознавания.
PyMuPDF отличная библиотека для преобразования PDF файлов в текст, но при условии, что отсканированный PDF документ в хорошем качестве. Отличается своей скоростью и простотой использования.
В заключении, можно сказать, что если в вашей задаче качественные экземпляры сканов, то не стоит сразу пытаться усложнять и использовать компьютерное зрение, а стоит попробовать модули и библиотеки предназначенные для распознавания PDF. Если же вы столкнулись с некачественным сканом, можно использовать компьютерное зрение и пробовать менять различные параметры.
Источник: vc.ru
Распознавание текста с картинки на Python | Оптическое распознавание символов Tesseract
Какова лучшая бесплатная программа OCR или ICR для транскрипции рукописи?
Я писатель рассказов и сказок. Я ищу бесплатную программу оптического распознавания символов (OCR) или интеллектуального распознавания символов (ICR) для сканирования моих старых рукописей из изображений или фотографий, чтобы я мог преобразовать их в файлы Microsoft Word.
Существуют ли бесплатные и точные программы, способные сделать это? К сожалению, у меня нет сканера, но у меня есть доступ к цифровой камере с разрешением 20 мегапикселей.
Ответ Каннона:
Как вы уже упоминали, есть несколько видов технологий распознавания символов, которые могут автоматически преобразовывать рукописные или печатные надписи в цифровые символы. Уровень точности этих видов программного обеспечения сильно различается в разных реализациях. Некоторые конвертируют по буквам, а другие могут конвертировать целые слова. Существует три основных категории этого программного обеспечения:
- Оптическое распознавание символов (OCR)
- Интеллектуальное распознавание символов (ICR)
- Интеллектуальное распознавание слов (IWR)
Оптическое распознавание символов
По правде говоря, OCR — это общий термин, и часто все методы, описанные в этой статье, называются OCR — однако Википедия дает OCR свою собственную классификацию, но современные реализации, как правило, объединяют несколько методов. Так что же это делает? OCR преобразует отдельные печатные или рукописные буквы в цифровые символы. Таким образом, программа просматривает документ, а затем пытается преобразовать его в простой текст, угадывая, что представляет собой каждый символ.
Программное обеспечение не идеально. Программное обеспечение OCR может неправильно истолковывать отдельные символы с похожим внешним видом, что приводит к ошибочным словам и неточным выводам. В большинстве случаев пользователи могут копировать текст, сгенерированный программой OCR, в текстовый процессор и автоматически исправлять орфографические ошибки. Часто ошибки будут отображаться в виде похожих символов. Например, буква «d» может быть представлена как «cl».
Но когда дело доходит до рукописных текстов, распознавание текста не очень хорошо. По крайней мере, большинство бесплатных реализаций трагически плохи. Есть некоторые коммерческие продукты, которые действительно могут записать рукописную транскрипцию, но их цена делает их полностью недоступными для широкой публики. Например, есть программное обеспечение Lexmark для чтения оптических дисков ReadSoft . Это корпоративное программное обеспечение стоит тысячи долларов.
Интеллектуальное распознавание символов
ICR является подмножеством OCR, которое специализируется на преобразовании рукописного текста в отдельные цифровые символы. Учитывая, что ваши заметки и рукописи написаны от руки, программа ICR является наиболее полезной. Однако я не уверен, насколько точно они могут конвертировать тексты, написанные на иностранных языках, таких как испанский. Как и в случае с OCR, пользователи могут улучшить качество выводимых текстов, скопировав их в текстовый процессор с включенной корректировкой орфографии, а затем отредактировав вручную.
Интеллектуальное распознавание слов
Последней эволюцией OCR и ICR является программное обеспечение Intelligent Word Recognition . Вместо того, чтобы распознавать отдельные символы, он пытается перевести все рукописные слова. Как и OCR и ICR, интеллектуальное распознавание слов часто неправильно переводит слова и требует, чтобы пользователь вручную исправлял любые допущенные ошибки.
Какое лучшее бесплатное программное обеспечение для распознавания текста?
Тессеракт
Есть много доступных вариантов. Тессеракт , вероятно, лучшее программное обеспечение для оптического распознавания текста с открытым исходным кодом. Насколько мне известно, он смотрит только на отдельных персонажей, а не на целые слова.
Потому что вы используете Microsoft Word (который имеет лучшую, наиболее настраиваемую проверку орфографии проверить на предприятиях), вы можете просто скопировать весь текст в Word, а затем запустить проверку орфографии, чтобы убрать орфографические ошибки.
Тессеракт на самом деле является механизмом OCR, который запускается из командной строки. Если вы не готовы справиться с трудностями владения инструментом командной строки, вы, вероятно, захотите установить что-то более удобное для пользователя. Есть загружаемый «интерфейс» (или графический интерфейс пользователя), который позволяет использовать Tesseract в качестве инструмента перетаскивания: PDF OCR X. Сначала установите пакет программного обеспечения, затем запустите его. Вы увидите окно:
Затем вы просто перетащите файл изображения в окно. Как только изображение загрузится, запустите программу транскрипции OCR. Это может занять минуту или около того.
К сожалению, он оказался совершенно неадекватным для обработки вашего текста. Вот как это выглядит после извлечения текста из документа:
Microsoft OneNote
Поскольку кажется, что вы уже используете Microsoft Office, лучший вариант, вероятно, также от Microsoft. Я собираюсь догадаться, что у вас есть копия Microsoft Office, в которую входит OneNote. Это оснащено довольно продвинутой технологией OCR.
Кроме того, как на iOS, так и на Android есть также совершенно бесплатный объектив Microsoft Office , который может конвертировать JPEG (и другие форматы изображений) непосредственно в текст. Что делает мобильные версии такими замечательными, так это то, что вы можете снимать изображения, загружать их в систему облачных вычислений Microsoft, а затем запускать извлечение текста из OneNote на рабочем столе.
Процесс довольно прост. Сначала сфотографируй свой текст . Если вы решили использовать приложение OneNote, вам нужно всего лишь сохранить файл в своей учетной записи OneDrive. В противном случае перенесите изображение на свой компьютер и поместите в OneNote.
Затем щелкните правой кнопкой мыши изображение и выберите « Копировать текст из рисунка» в контекстном меню.
Затем щелкните правой кнопкой мыши пустую часть OneNote (или в приложении для чтения текста) и вставьте текст в . Вывод текста из вашего документа выглядит следующим образом:
К сожалению, результаты OneNote не имеют ничего общего с хорошей работой, производя полную чушь. Это может быть вызвано сочетанием таких факторов, как искаженное изображение или запись, которые не выполняются по прямой линии, или просто потому, что программное обеспечение недостаточно хорошо.
Google Keep
На данный момент лучшее решение для распознавания рукописных документов относится к машинному обучению: в частности, глубокому обучению. Глубокое обучение — это сложный метод обучения компьютера выполнению задач, в которых ранее только человек обладал превосходством, таких как распознавание лиц ( Picasa выполняет распознавание лиц , хотите верьте, хотите нет). Google недавно приобрела DeepMind, которая разрабатывает технологию глубокого обучения Это приобретение ключа имело большой эффект: Microsoft проигрывает Google в OCR Сейчас Google предлагает один из самых продвинутых (и бесплатных) методов: Google Keep .
Google Keep (который мы впервые рассмотрели в 2013 году « ) также предлагает мобильную версию своего приложения для Android . Как и в OneNote, вы можете снимать изображения и передавать их прямо в облако Google. Просто перетащите изображение в окно Google Keep. Затем нажмите кнопку меню (три вертикальные точки) и выберите « Захватить текст изображения» в контекстном меню.
Вот как это выглядит после извлечения текста:
Google Keep Wins
Как видите, Google Keep доминирует в конкурентной борьбе. Результаты могут быть еще более улучшены с помощью инструмента редактирования изображений. инструментов чтобы увеличить контраст и выровнять изображение.
Надеюсь, эти варианты помогут. Если вам нужны дополнительные возможности распознавания текста, посмотрите 5 лучших инструментов распознавания текста 5 лучших инструментов , для получения дополнительной информации.
Источник: gadgetshelp.com
Оптическое распознавание символов в Raspberry Pi с помощью Tesseract
Способность современных машин (вычислительных устройств) использовать камеры для получения информации об окружаем мире и способность интерпретировать/обрабатывать эти данные с каждым годом оказывает все большее влияние на жизнь современного общества. Сейчас уже никого не удивишь роботом доставщиком еды (например, Starship Robots) или автомобилем с функцией автопилота (например, Tesla) – эти устройства во время своего движения для принятия решений полагаются на информацию, получаемую от своих высоко технологичных камер. В данной статье мы рассмотрим основы технологии оптического распознавания символов (Optical Character Recognition, OCR), применяемой в современных электронных устройствах для распознавания отдельных символов на изображении.
У этой технологии очень много возможностей для практического применения в современном мире: считывание информации с визиток, распознавание магазине по его названию, распознавание дорожных знаков и многое другое. Наверняка многие из вас уже слышали о таком приложении как Google Lens, которое представляет собой систему искусственного интеллекта, распознающую в режиме реального времени объекты на фотографии и предоставляющую имеющуюся по ним сведения в сети интернет. В данной статье мы рассмотрим похожий инструмент от компании Google для выполнения задачи оптического распознавания символов (OCR) под названием Tesseract-OCR Engine, работающий на основе языка python и библиотеки OpenCV. Данный инструмент позволяет распознавать/идентифицировать символы на изображениях с помощью платы Raspberry Pi.
Установка Tesseract на Raspberry Pi
Для выполнения задачи оптического распознавания символов (OCR) в Raspberry Pi нам необходимо установить на нее Tesseract OCR engine. Чтобы сделать это нам сначала нужно сконфигурировать Debian Package (dpkg), который затем поможет нам установить Tesseract OCR. Для конфигурирования Debian Package выполните следующую команду:
sudo dpkg — — configure – a
Далее мы можем приступить к установке Tesseract OCR (Optical Character Recognition) с помощью опции apt-get. Выполните для этого команду:
sudo apt — get install tesseract — ocr
После этого в окне терминала вы должны увидеть примерно следующую картину:
Процесс установки Tesseract OCR займет около 5-10 минут.
Теперь, когда у нас Tesseract OCR установлен, нам необходимо установить еще пакет PyTesseract с помощью установщика пакетов pip. Pytesseract – это python оболочка для Tesseract OCR engine, которая позволяет использовать возможности Tesseract из языка python. Для установки PyTesseract выполните следующую команду:
Pip install pytesseract
Прежде чем продолжать далее убедитесь в том, что на вашей плате установлена библиотека pillow. О том, как ее установить, можно прочитать в статье про распознавание лиц с помощью платы Raspberry Pi. После завершения установки pytesseract вы в окне терминала должны увидеть примерно следующую картину:
Tesseract 4.0 на Windows/Ubuntu
Проект оптического распознавания символов изначально начинал разрабатываться компанией Hewlett Packard в 1980 году. Затем он был выкуплен компанией Google, которая и осуществляет его поддержку вплоть до настоящего времени. Многие годы Tesseract хорошо работал только на изображениях определенного формата. К примеру, если фон изображения был сильно зашумлен или объект для распознавания был не в фокусе, то Tesseract работал не очень хорошо.
Для преодоления этой проблемы последние версии tesseract (к примеру, версия Tesseract 4.0) стали использовать технологии машинного обучения (Deep Learning) для улучшения распознавания символов и даже почерка. Tesseract 4.0 использует Long Short-Term Memory (LSTM) и рекуррентную нейронную сеть (Recurrent Neural Network, RNN) для повышения точности распознавания символов.
К сожалению, на момент написания оригинала данной статьи (август 2019 г., ссылка на оригинал в конце статьи) Tesseract 4.0 был доступен для использования только в операционных системах Windows и Ubuntu, а для Raspberry Pi он находился в стадии бета тестирования. Поэтому в оригинале данной статьи автор использовал ее версию Tesseract 3.04 на Raspberry Pi. На момент прочтения вами данной статьи, скорее всего, будут доступны уже и более свежие версии Tesseract для Raspberry Pi. Но мы надеемся, что после прочтения данной статьи у вас их применение не вызовет никаких затруднений.
Простое распознавание символов в Raspberry Pi
В предыдущем пункте статьи мы уже установили на плату Raspberry Pi библиотеку Tesseract OCR и пакет Pytesseract. Поэтому в данном разделе статьи мы напишем небольшую программу чтобы проверить как работает распознавание символов на тестовом изображении. В качестве тестового изображения мы будем использовать следующее:
Текст используемой нами программы будет очень простой. Как видите, он даже не использует пакеты библиотеки OpenCV.
from PIL import Image
img = Image . open ( ‘ 1.png ’ )
text = pytesseract . image_to_string ( img , config = ’’ )
print ( text )
В представленной программе мы пытаемся прочитать текст с изображения под названием ‘1.png’, которое расположено в том же самом каталоге, что и наша программа. Для открытия этого изображения используется пакет Pillow, после чего оно сохраняется в переменной img . Затем мы используем метод image_to_string из пакета pytesseract для обнаружения любого текста на изображении и сохраняем его в переменной text . И, наконец, мы выводим значение переменной text на экран чтобы проверить результат работы программы.
Как вы можете видеть, тестовое изображение содержит текст Explain that Stuff! 01234567890”, а в результате работы нашей небольшой программы мы получили текст “Explain that stuff! Sdfiosiefoewufv”. Это означает, что наша программа не смогла распознать цифры на изображении.
Для преодоления этой проблемы обычно используют библиотеку OpenCV чтобы удалить шум (зашумленность) из программы и затем настраивают Tesseract OCR engine чтобы получить более впечатляющие результаты. Но помните о том, что не стоит ожидать 100% точности распознавания от Tesseract OCR Python.
Настройка Tesseract OCR для улучшения результатов
Pytesseract позволяет нам производить настройку Tesseract OCR engine при помощи установки флагов (flags), которые влияют на способ поиска символов на изображении. Для настройки Tesseract OCR используется 3 основных флага:
- language (-l) (язык);
- OCR Engine Mode (—oem) (режим работы «движка» распознавания символов);
- Page Segmentation Mode (- -psm) (режим сегментации страниц).
Кроме английского языка (по умолчанию) Tesseract также поддерживает множество других языков: Hindi, Турецкий, Французский и др. Мы в нашем проекте будем использовать только английский язык (English), но вы можете скачать соответствующие обучающие пакеты со страницы на github и добавить их в свой пакет чтобы иметь возможность распознавать символы на других языках. Также возможно производить распознавание двух или более языков на одном и том же изображении. Язык распознавания устанавливается с помощью флага language, значение этого флага –l соответствует английскому языку (English), для других языков необходимо использовать другие значения этого флага.
Следующим флагом является OCR Engine Mode, с помощью которого можно использовать 4 различных режима распознавания. Каждый режим использует свой собственный алгоритм для распознавания символов на изображении. По умолчанию используется алгоритм, который устанавливается вместе с пакетом. Но мы можем изменить его чтобы использовать LSTM или Neural nets (нейронные сети). 4 доступных режима OCR Engine Mode показаны на следующем рисунке. Этот флаг устанавливается с помощью префикса —oem, то есть чтобы использовать mode 1 (режим 1), необходимо ввести — oem 1.
И, наконец, один из самых значимых флагов, которые используются для настройки Tesseract OCR – это флаг режима сегментации страниц (page segmentation mode flag). Этот флаг очень полезен когда фон вашего изображения имеет много незначащих деталей (шум) или символы на изображении написаны в различной ориентации и с различными размерами. Всего доступно 14 различных режимов сегментации страниц, которые представлены на рисунке ниже. Флаг устанавливается с помощью префикса –psm, в нашем случае мы будем использовать –psm 11.
Использование флагов oem и psm в Tesseract на Raspberry Pi для улучшения результатов распознавания
Проверим эффективность рассмотренных режимов. На представленном ниже рисунке мы сделали попытку распознавания символов на дорожном знаке, обозначающем ограничение скорости. На знаке написано “SPEED LIMIT 35”. Как вы можете видеть из представленного рисунка, число 35 на нем значительно большего размера, чем все остальные символы. Это обстоятельство существенно затрудняет работу Tesseract, поэтому он смог распознать с этого изображения “SPEED LIMIT”, а цифры не распознал.
Чтобы преодолеть эту проблему, мы попробуем настроить флаги. В ранее рассмотренной программе флаг настройки пуст (config=’’), исправим это. Текст на изображении на английском языке, поэтому используем флаг –l eng, флаг oem оставим в режиме по умолчанию, то есть –oem 3 (режим 3). Теперь нам осталось только настроить флаг psm, нам необходимо найти больше символов на изображении, поэтому мы будем использовать режим 11, то есть получим флаг –psm 11. Окончательная настройка флагов будет выглядеть следующим образом:
Источник: microkontroller.ru