Как сделать OCR из командной строки Linux с помощью Tesseract
Вы можете извлекать текст из изображений в командной строке Linux, используя механизм распознавания текста Tesseract. Это быстро, точно и работает примерно на 100 языках. Вот как это использовать.
Оптическое распознавание символов
Оптическое распознавание символов (OCR) – это возможность просматривать и находить слова на изображении, а затем извлекать их в виде редактируемого текста. Эта простая задача для людей очень сложна для компьютеров. Первые попытки были, мягко говоря, неуклюжими. Компьютеры часто сбивались с толку, если шрифт или размер не нравились программе распознавания текста.
Тем не менее пионеры в этой области по-прежнему пользовались большим уважением. Если вы потеряли электронную копию документа, но сохранили печатную версию, OCR может воссоздать электронную редактируемую версию. Даже если результаты не были на 100% точными, это все равно здорово экономило время.
С некоторой ручной уборкой вы получите свой документ обратно. Люди прощали ошибки, которые он допустил, потому что понимали сложность задачи, стоящей перед пакетом OCR. Кроме того, это было лучше, чем перепечатывать весь документ.
С тех пор дела значительно улучшились. Приложение Tesseract OCR, написанное Hewlett Packard, появилось в 1980-х годах как коммерческое приложение. Он был открыт в 2005 году и сейчас поддерживается Google. Он имеет многоязычные возможности, считается одной из самых точных доступных систем распознавания текста, и вы можете использовать его бесплатно.
Установка Tesseract OCR
Чтобы установить Tesseract OCR в Ubuntu, используйте эту команду:
sudo apt-get install tesseract-ocr
sudo dnf install tesseract
На Manjaro вам нужно ввести:
sudo pacman -Syu tesseract
Использование Tesseract OCR
Мы собираемся поставить перед Tesseract OCR ряд задач. Наше первое изображение, содержащее текст, является выдержкой из Декларации 63 Общих правил защиты данных. Давайте посмотрим, сможет ли OCR прочитать это (и не заснуть).
Это хитрый образ, потому что каждое предложение начинается со слабой надстрочной цифры, что типично для законодательных документов.
Нам нужно предоставить команде tesseract некоторую информацию, в том числе:
- Имя файла изображения, которое мы хотим обработать.
- Имя текстового файла, который будет создан для хранения извлеченного текста. Нам не нужно указывать расширение файла (оно всегда будет .txt). Если файл с таким именем уже существует, он будет перезаписан.
- Мы можем использовать параметр —dpi , чтобы указать tesseract разрешение изображения в точках на дюйм (dpi). Если мы не указываем значение dpi, tesseract попытается его вычислить.
Наш файл изображения называется «recital-63.png» и имеет разрешение 150 dpi. Мы собираемся создать из него текстовый файл под названием «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 отлично справляется, как показано в извлеченном тексте ниже. День, 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 для каждого файла изображения с помощью одной команды, нам нужно использовать цикл for. Для каждого из наших файлов «turing-nn.png» мы запускаем tesseract и создаем текстовый файл с именем «text-» плюс «turing-nn» как часть имени файла изображения:
for i in turing-. png; do tesseract "$i" "text-$i" -l eng; done;
Чтобы объединить все текстовые файлы в один, мы можем использовать cat :
cat text-turing* > complete.txt
Итак, как это было сделано? Очень хорошо, как вы можете видеть ниже. Однако первая страница выглядит довольно сложной. Он имеет различные стили и размеры текста, а также оформление. Также есть вертикальный «водяной знак» на правом краю страницы.
Однако результат близок к оригиналу. Очевидно, форматирование сбилось, но текст правильный.
Вертикальный водяной знак был расшифрован как строка тарабарщины внизу страницы. Текст был слишком мал, чтобы tesseract мог его точно прочитать, но его было достаточно легко найти и удалить. Худшим результатом были бы случайные символы в конце каждой строки.
Любопытно, что отдельные буквы в начале списка вопросов и ответов на второй странице были проигнорированы. Раздел из PDF показан ниже.
Как вы можете видеть ниже, вопросы остались, но «Q» и «A» в начале каждой строки были потеряны.
Диаграммы также не будут расшифрованы правильно. Давайте посмотрим, что происходит, когда мы пытаемся извлечь показанный ниже файл из Turing PDF.
Как вы можете видеть в нашем результате ниже, символы были прочитаны, но формат диаграммы был потерян.
Опять же, tesseract боролся с малым размером индексов, и они отображались неправильно.
Но, справедливости ради, это все равно был хороший результат. Нам не удалось извлечь простой текст, но этот пример был выбран намеренно, потому что он представляет собой проблему.
Хорошее решение, когда оно вам нужно
OCR — это не то, что вам нужно использовать ежедневно. Однако, когда возникает необходимость, приятно знать, что в вашем распоряжении есть один из лучших механизмов OCR.
Как установить OCR Tesseract?
При попытке установки Tesseract-а — после сообщения об окончании его установки и появлении соответствующего указания в менеджере пакетов Sinaptec — в разделе «Графика» ничего подобного не появилось:
Попытка убрать и установить по новой — ничего не изменила. В чем дело, где он находится и как им можно пользоваться?
Olej
New member
В Linux при установке любого пакета он вовсе не обязан обязательно появляться в меню системы.
Многие программы после установки запускаются по имени в терминале. Потом, если захотите, «по следам» (по синтаксису) такого запуска можете сами сделать значок на рабочем столе, или ручным редактированием нового пункта меню.
Olej
New member
tesseract вообще является консольной программой и для него нет никакого GUI и он и не может нигде «появиться».
Для него есть несколько GUI обёрток, таких как YAGF и др. . но это уже совсем другие пакеты.
Про сканирование и распознавание текста (OCR в Linux) почитайте по ссылке. Там же есть примеры того как работать с tesseract.
Olej
New member
Для выньдаунов , людей переходящих «из винды» в Linux просто необходимо такое маленькое введение:
— Windows и Linux совершенно разные ОС по своим базовым основам.
— в Windows графическое окно программы является базовым понятием (программирования), на котором стоит вся система — не может быть программы без её «главного окна программы»;
— в Linux, наоборот, всё что графика — является необязательной надстройкой, её можно просто не устанавливать в системе вообще;
— смысл и место графики в этих ОС — совершенно различно . даже если и выглядит похоже
— подавляющее большинство графических программ (GUI) в Linux — это только тонкие обёртки, из-под которых выполняются как дочерние процессы отдельные консольные команды Linux.
P.S. Если вы не освоите технику командной строки в Linux, то вы никогда толком не сможете понимать что здесь происходит «под капотом» и гибко и профессионально пользоваться Linux. Для бухгалтера за компьютером это вполне допустимо. Для инженера IT — ни в коем случае! Выбирайте сами кому что.