Как сделать OCR из командной строки Linux, используя Tesseract
![Окно терминала на ноутбуке с Linux.](https://www.howtogeek.com/wp-content/uploads/2019/09/xstock-lede-linux-see-attribution.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.rjm91kC_Jl.png)
Вы можете извлечь текст из изображений в командной строке Linux, используя механизм распознавания текста Tesseract. Это быстрый, точный и работает на 100 языках. Вот как это использовать.
Оптическое распознавание символов
Оптическое распознавание символов (OCR) – это возможность просматривать и находить слова на изображении, а затем извлекать их как редактируемый текст. Эта простая задача для людей очень трудна для компьютеров. Первые усилия были неуклюжи, если не сказать больше. Компьютеры часто путались, если шрифт или размер не нравились программному обеспечению OCR.
Тем не менее, пионеры в этой области все еще находились в почете. Если вы потеряли электронную копию документа, но у вас все еще была печатная версия, OCR может воссоздать электронную, редактируемую версию. Даже если результаты не были точными на 100%, это все равно помогло сэкономить время.
После некоторой ручной уборки вы получите свой документ обратно. Люди прощали ошибки, которые они допустили, потому что они понимали сложность задачи, стоящей перед пакетом OCR. Плюс, это было лучше, чем перепечатывать весь документ.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
С тех пор ситуация значительно улучшилась. Приложение Tesseract OCR, написанное Hewlett Packard, начатый в 1980-х годах как коммерческое приложение. Это было с открытым исходным кодом в 2005 году, и теперь оно поддерживается Google, Он имеет многоязычные возможности, считается одной из самых точных систем распознавания, и вы можете использовать ее бесплатно.
Установка Tesseract OCR
Чтобы установить Tesseract OCR в Ubuntu, используйте эту команду:
sudo apt-get install tesseract-ocr
На Fedora команда выглядит так:
sudo dnf install tesseract
На Манджаро нужно набрать:
sudo pacman -Syu tesseract
Использование Tesseract OCR
Мы собираемся поставить ряд задач для Tesseract OCR. Наше первое изображение, которое содержит текст, является выдержкой из Recital 63 из Общие положения о защите данных, Посмотрим, сможет ли OCR это прочитать (и не спать).
Это хитрое изображение, потому что каждое предложение начинается со слабого номера надстрочного индекса, что типично для законодательных документов.
Нам нужно дать tesseract
командовать некоторой информацией, в том числе:
- Имя файла изображения, который мы хотим обработать.
- Имя текстового файла, который будет создан для хранения извлеченного текста. Нам не нужно указывать расширение файла (оно всегда будет .txt). Если файл с таким именем уже существует, он будет перезаписан.
- Мы можем использовать
--dpi
возможность рассказатьtesseract
что за точек на дюйм (dpi) разрешение изображения. Если мы не предоставляем значение dpi,tesseract
постараюсь разобраться.
Наш файл изображения называется recital-63.png, и его разрешение составляет 150 точек на дюйм. Мы собираемся создать текстовый файл с именем «recital.txt».
Наша команда выглядит так:
tesseract recital-63.png recital --dpi 150
Результаты очень хорошие. Единственная проблема – верхние индексы – они были слишком слабыми, чтобы их можно было правильно прочитать. Хорошее качество изображения жизненно важно для получения хороших результатов.
tesseract
интерпретировал числа надстрочных знаков как кавычки («) и символы степени (°), но фактический текст был извлечен идеально (правая сторона изображения должна была быть обрезана, чтобы соответствовать здесь).
Последний символ – это байт с шестнадцатеричным значением 0x0C, который является возвратом каретки.
Ниже еще одно изображение с текстом разных размеров, выделенным жирным шрифтом и курсивом.
Название этого файла – «bold-italic.png». Мы хотим создать текстовый файл с именем «bold.txt», поэтому наша команда:
tesseract bold-italic.png bold --dpi 150
В этом не было никаких проблем, и текст был извлечен идеально.
Использование разных языков
Tesseract OCR поддерживает около 100 языков, Чтобы использовать язык, вы должны сначала установить его. Когда вы найдете язык, который вы хотите использовать в списке, обратите внимание на его сокращение. Мы собираемся установить поддержку для валлийцев. Его сокращение – «cym», что сокращенно от «Cymru», что означает валлийский.
Инсталляционный пакет называется «tesseract-ocr-» с сокращением языка, помеченным на конце. Чтобы установить файл с валлийским языком в Ubuntu, мы будем использовать:
sudo apt-get install tesseract-ocr-cym
Изображение с текстом ниже. Это первый стих уэльского государственного гимна.
Давайте посмотрим, справится ли Tesseract OCR с этой задачей. Мы будем использовать -l
(язык) вариант, чтобы позволить tesseract
знать язык, на котором мы хотим работать:
tesseract hen-wlad-fy-nhadau.png anthem -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-файл, который мы будем использовать в нашем примере, является копией оригинальной статьи Алана Тьюринга по искусственному интеллекту «Компьютерная техника и интеллект».
Мы используем -png
возможность указать, что мы хотим создавать файлы PNG. Имя файла нашего PDF – «turing.pdf». Мы будем называть наши файлы изображений «turing-01.png», «turing-02.png» и так далее:
pdftoppm -png turing.pdf turing
Бежать tesseract
для каждого файла изображения с помощью одной команды, мы должны использовать для цикла, Для каждого из нашихпп.png, »файлы, которые мы запускаем tesseract
и создайте текстовый файл с именем «text-» плюс «turing-»пп»Как часть имени файла изображения:
for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;
Чтобы объединить все текстовые файлы в один, мы можем использовать cat
:
cat text-turing* > complete.txt
Вертикальный водяной знак был расшифрован как линия тарабарщины внизу страницы. Текст был слишком мал для чтения tesseract
точно, но было бы достаточно легко найти и удалить его. Худшим результатом были бы случайные символы в конце каждой строки.
Любопытно, что отдельные буквы в начале списка вопросов и ответов на второй странице были проигнорированы. Раздел из PDF показан ниже.
Как вы можете видеть ниже, вопросы остаются, но «Q» и «A» в начале каждой строки были потеряны.
Диаграммы также не будут правильно расшифрованы. Давайте посмотрим, что происходит, когда мы пытаемся извлечь приведенный ниже пример из PDF-файла Тьюринга.
Как вы можете видеть в нашем результате ниже, символы были прочитаны, но формат диаграммы был утерян.
Очередной раз, tesseract
боролись с небольшим размером подписчиков, и они были отображены неправильно.
Справедливости ради, тем не менее, это был еще хороший результат. Мы не смогли извлечь простой текст, но тогда этот пример был сознательно выбран, потому что он представлял проблему.
Хорошее решение, когда вам это нужно
OCR – это не то, что вам нужно использовать ежедневно. Однако, когда возникает необходимость, приятно знать, что в вашем распоряжении один из лучших механизмов распознавания.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)