Как сделать OCR из командной строки Linux, используя Tesseract

3 min


Окно терминала на ноутбуке с Linux.
Фатмавати Ахмад Заенури / Shutterstock

Вы можете извлечь текст из изображений в командной строке Linux, используя механизм распознавания текста Tesseract. Это быстрый, точный и работает на 100 языках. Вот как это использовать.

Оптическое распознавание символов

Оптическое распознавание символов (OCR) — это возможность просматривать и находить слова на изображении, а затем извлекать их как редактируемый текст. Эта простая задача для людей очень трудна для компьютеров. Первые усилия были неуклюжи, если не сказать больше. Компьютеры часто путались, если шрифт или размер не нравились программному обеспечению OCR.

Тем не менее, пионеры в этой области все еще находились в почете. Если вы потеряли электронную копию документа, но у вас все еще была печатная версия, OCR может воссоздать электронную, редактируемую версию. Даже если результаты не были точными на 100%, это все равно помогло сэкономить время.

После некоторой ручной уборки вы получите свой документ обратно. Люди прощали ошибки, которые они допустили, потому что они понимали сложность задачи, стоящей перед пакетом OCR. Плюс, это было лучше, чем перепечатывать весь документ.

С тех пор ситуация значительно улучшилась. Приложение Tesseract OCR, написанное Hewlett Packard, начатый в 1980-х годах как коммерческое приложение. Это было с открытым исходным кодом в 2005 году, и теперь оно поддерживается Google, Он имеет многоязычные возможности, считается одной из самых точных систем распознавания, и вы можете использовать ее бесплатно.

Установка Tesseract OCR

Чтобы установить Tesseract OCR в Ubuntu, используйте эту команду:

sudo apt-get install tesseract-ocr

sudo apt установите tesseract-ocr в окне терминала.

На Fedora команда выглядит так:

sudo dnf install tesseract

sudo dnf установить тессеракт в окне терминала.

На Манджаро нужно набрать:

sudo pacman -Syu tesseract

sudo pacman -Сю тессеракт в окне терминала.

Использование Tesseract OCR

Мы собираемся поставить ряд задач для Tesseract OCR. Наше первое изображение, которое содержит текст, является выдержкой из Recital 63 из Общие положения о защите данных, Посмотрим, сможет ли OCR это прочитать (и не спать).

Извлечение из Recital 63 GDPR

Это хитрое изображение, потому что каждое предложение начинается со слабого номера надстрочного индекса, что типично для законодательных документов.

Нам нужно дать tesseract командовать некоторой информацией, в том числе:

  • Имя файла изображения, который мы хотим обработать.
  • Имя текстового файла, который будет создан для хранения извлеченного текста. Нам не нужно указывать расширение файла (оно всегда будет .txt). Если файл с таким именем уже существует, он будет перезаписан.
  • Мы можем использовать --dpi возможность рассказать tesseract что за точек на дюйм (dpi) разрешение изображения. Если мы не предоставляем значение dpi, tesseract постараюсь разобраться.

Наш файл изображения называется recital-63.png, и его разрешение составляет 150 точек на дюйм. Мы собираемся создать текстовый файл с именем «recital.txt».

Наша команда выглядит так:

tesseract recital-63.png recital --dpi 150

tesseract recital-63.png recital --dpi 150 в окне терминала.

Результаты очень хорошие. Единственная проблема — верхние индексы — они были слишком слабыми, чтобы их можно было правильно прочитать. Хорошее качество изображения жизненно важно для получения хороших результатов.

Извлеченный текст из концерта 63.

tesseract интерпретировал числа надстрочных знаков как кавычки («) и символы степени (°), но фактический текст был извлечен идеально (правая сторона изображения должна была быть обрезана, чтобы соответствовать здесь).

Последний символ — это байт с шестнадцатеричным значением 0x0C, который является возвратом каретки.

Ниже еще одно изображение с текстом разных размеров, выделенным жирным шрифтом и курсивом.

Изображение с различными размерами текста, выделенное жирным шрифтом и курсивом.

Название этого файла — «bold-italic.png». Мы хотим создать текстовый файл с именем «bold.txt», поэтому наша команда:

tesseract bold-italic.png bold --dpi 150

tesseract bold-italic.png bold --dpi 150 в окне терминала.

В этом не было никаких проблем, и текст был извлечен идеально.

извлеченный текст из bold-italic.png.

Использование разных языков

Tesseract OCR поддерживает около 100 языков, Чтобы использовать язык, вы должны сначала установить его. Когда вы найдете язык, который вы хотите использовать в списке, обратите внимание на его сокращение. Мы собираемся установить поддержку для валлийцев. Его сокращение — «cym», что сокращенно от «Cymru», что означает валлийский.

Инсталляционный пакет называется «tesseract-ocr-» с сокращением языка, помеченным на конце. Чтобы установить файл с валлийским языком в Ubuntu, мы будем использовать:

sudo apt-get install tesseract-ocr-cym

sudo apt-get установите tesseract-ocr-cym в окне терминала.

Изображение с текстом ниже. Это первый стих уэльского государственного гимна.

изображение, содержащее текст первого стиха уэльского государственного гимна.

Давайте посмотрим, справится ли Tesseract OCR с этой задачей. Мы будем использовать -l (язык) вариант, чтобы позволить tesseract знать язык, на котором мы хотим работать:

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150

tesseract hen-wlad-fy-nhadau.png гимн -l cym --dpi 150 в окне терминала.

tesseract отлично справляется, как показано в извлеченном тексте ниже. Da Iawn, Tesseract OCR.

Извлеченный текст на валлийском языке.

Если ваш документ содержит два или более языков (например, словарь валлийский-английский), вы можете использовать знак плюс (+) сказать tesseract добавить другой язык, вот так:

tesseract image.png textfile -l eng+cym+fra

Использование Tesseract OCR с PDF-файлами

tesseract Команда предназначена для работы с файлами изображений, но она не может читать PDF-файлы. Однако, если вам нужно извлечь текст из PDF, вы можете сначала использовать другую утилиту для генерации набора изображений. Одно изображение будет представлять одну страницу PDF.

pdftppm утилита вам нужна должен быть уже установлен на вашем компьютере с Linux. PDF-файл, который мы будем использовать в нашем примере, является копией оригинальной статьи Алана Тьюринга по искусственному интеллекту «Компьютерная техника и интеллект».

PDF титульного листа

Мы используем -png возможность указать, что мы хотим создавать файлы PNG. Имя файла нашего PDF — «turing.pdf». Мы будем называть наши файлы изображений «turing-01.png», «turing-02.png» и так далее:

pdftoppm -png turing.pdf turing

pdftoppm -png turing.pdf Тьюринг в окне терминала.

Бежать tesseract для каждого файла изображения с помощью одной команды, мы должны использовать для цикла, Для каждого из нашихпп.png, »файлы, которые мы запускаем tesseractи создайте текстовый файл с именем «text-» плюс «turing-»пп»Как часть имени файла изображения:

for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;

для меня в туринге - ??. png; сделать тессеракт

Чтобы объединить все текстовые файлы в один, мы можем использовать cat:

cat text-turing* > complete.txt

cat text-turing * data-recalc-dims= complete.txt в окне терминала.» width=»646″ height=»57″ onload=»pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);» onerror=»this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);»/>

Итак, как это было? Очень хорошо, как вы можете видеть ниже. Первая страница выглядит довольно сложной, хотя. Он имеет разные стили текста и размеров, а также оформление. На правом краю страницы также есть вертикальный «водяной знак».

Однако вывод близок к оригиналу. Очевидно, форматирование было потеряно, но текст правильный.

Первая страница извлеченного текста из PDF-файла Тьюринга.

Вертикальный водяной знак был расшифрован как линия тарабарщины внизу страницы. Текст был слишком мал для чтения tesseract точно, но было бы достаточно легко найти и удалить его. Худшим результатом были бы случайные символы в конце каждой строки.

Любопытно, что отдельные буквы в начале списка вопросов и ответов на второй странице были проигнорированы. Раздел из PDF показан ниже.

Список вопросов и ответов в PDF-документе Тьюринга.

Как вы можете видеть ниже, вопросы остаются, но «Q» и «A» в начале каждой строки были потеряны.

Извлеченный текст со страницы вопросов и ответов в PDF-файле Тьюринга.

Диаграммы также не будут правильно расшифрованы. Давайте посмотрим, что происходит, когда мы пытаемся извлечь приведенный ниже пример из PDF-файла Тьюринга.

Диаграмма «Ввод» и «Последнее состояние» из PDF-файла Тьюринга.

Как вы можете видеть в нашем результате ниже, символы были прочитаны, но формат диаграммы был утерян.

Извлеченный текст из диаграммы в документе Тьюринга.

Очередной раз, tesseract боролись с небольшим размером подписчиков, и они были отображены неправильно.

Справедливости ради, тем не менее, это был еще хороший результат. Мы не смогли извлечь простой текст, но тогда этот пример был сознательно выбран, потому что он представлял проблему.

Хорошее решение, когда вам это нужно

OCR — это не то, что вам нужно использовать ежедневно. Однако, когда возникает необходимость, приятно знать, что в вашем распоряжении один из лучших механизмов распознавания.


0 Comments

Ваш адрес email не будет опубликован. Обязательные поля помечены *