На Манджаро нужно набрать:
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 – это не то, что вам нужно использовать ежедневно. Однако, когда возникает необходимость, приятно знать, что в вашем распоряжении один из лучших механизмов распознавания.