Как да направите OCR от командния ред на Linux с помощта на Tesseract

Можете да извличате текст от изображения на командния ред на Linux с помощта на Tesseract OCR двигателя. Той е бърз, точен и работи на около 100 езика. Ето как да го използвате.

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

Оптично разпознаване на символи (OCR) е способността да се разглеждат и намират думи в изображение и след това да се извличат като текст, който може да се редактира. Тази проста задача за хората е много трудна за компютрите. Ранните усилия бяха меко казано тромави. Компютрите често се объркват, ако шрифтът или размерът не са по вкуса на софтуера за OCR.

Независимо от това, пионерите в тази област все още бяха на висока почит. Ако сте загубили електронното копие на документ, но все още имате отпечатана версия, OCR може да създаде отново електронна, редактируема версия. Дори и резултатите да не бяха 100 процента точни, това все пак беше страхотно спестяване на време.

С малко ръчно подреждане ще си върнете документа. Хората прощаваха за грешките, които направи, защото разбираха сложността на задачата, пред която е изправен OCR пакет. Освен това беше по-добре от пренаписването на целия документ.

Оттогава нещата се подобриха значително. Приложението Tesseract OCR, написано от Hewlett Packard, стартира през 80-те години на миналия век като търговско приложение. Той беше с отворен код през 2005 г. и сега се поддържа от Google. Той има многоезични възможности, счита се за една от най-точните налични OCR системи и можете да го използвате безплатно.

Инсталиране на Tesseract OCR

За да инсталирате Tesseract OCR на Ubuntu, използвайте тази команда:

sudo apt-get install tesseract-ocr

Във Fedora командата е:

sudo dnf install tesseract

На Manjaro трябва да напишете:

sudo pacman -Syu tesseract

Използване на Tesseract OCR

Ще поставим редица предизвикателства пред Tesseract OCR. Първото ни изображение, което съдържа текст, е откъс от съображение 63 от Общи правила за защита на данните. Нека видим дали OCR може да прочете това (и да остане буден).

  9-те най-добри приложения за домашни сървъри на Linux, които всеки трябва да инсталира

Това е сложно изображение, защото всяко изречение започва с бледа горен индекс, което е типично в законодателните документи.

Трябва да дадем на командата teseract известна информация, включително:

Името на файла с изображение, който искаме да обработи.
Името на текстовия файл, който ще създаде, за да задържи извлечения текст. Не е необходимо да предоставяме разширението на файла (това винаги ще бъде .txt). Ако вече съществува файл със същото име, той ще бъде презаписан.
Можем да използваме опцията –dpi, за да кажем на teseract какво е точки на инч (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“, което означава уелски.

  Как да превключите от Bash към Korn Shell на Linux

Инсталационният пакет се нарича “tesseract-ocr-” с езиковата абревиатура, маркирана в края. За да инсталираме файла на уелски език в Ubuntu, ще използваме:

sudo apt-get install tesseract-ocr-cym

Изображението с текста е по-долу. Това е първият куплет от националния химн на Уелс.

Нека видим дали Tesseract OCR се справя с предизвикателството. Ще използваме опцията -l (език), за да позволим на teseract да знае езика, на който искаме да работим:

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

tesseract се справя перфектно, както е показано в извлечения текст по-долу. Дайон, Tesseract OCR.

Ако вашият документ съдържа два или повече езика (като речник от уелски на английски, например), можете да използвате знак плюс (+), за да кажете на teseract да добави друг език, както следва:

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

За да стартираме teseract на всеки файл с изображение с помощта на една команда, трябва да използваме a за цикъл. За всеки от нашите файлове „turing-nn.png“ стартираме teseract и създаваме текстов файл, наречен „text-“ плюс „turing-nn“ като част от името на файла с изображение:

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

за аз в Тюринг-??.png;  направи тесеракт

За да комбинираме всички текстови файлове в един, можем да използваме cat:

cat text-turing* > complete.txt

cat text-turing* > complete.txt в прозорец на терминал.“  ширина=”646″ височина=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<div style=

И така, как се справи? Много добре, както можете да видите по-долу. Първата страница обаче изглежда доста предизвикателна. Има различни стилове и размери на текст, както и декорация. В десния край на страницата има и вертикален „воден знак“.

Изходът обаче е близо до оригинала. Очевидно форматирането е загубено, но текстът е правилен.

Вертикалният воден знак беше транскрибиран като ред безсмислици в долната част на страницата. Текстът беше твърде малък, за да бъде прочетен от тесеракта точно, но щеше да бъде достатъчно лесно да го намерите и изтриете. Най-лошият резултат би бил бездомни знаци в края на всеки ред.

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

Както можете да видите по-долу, въпросите остават, но „Q“ и „A“ в началото на всеки ред бяха загубени.

Диаграмите също няма да бъдат транскрибирани правилно. Нека да разгледаме какво се случва, когато се опитаме да извлечем показания по-долу от PDF PDF на Тюринг.

Диаграма на

Както можете да видите в нашия резултат по-долу, знаците бяха прочетени, но форматът на диаграмата беше загубен.

Отново, тесерактът се бори с малкия размер на индексите и те бяха изобразени неправилно.

Честно казано обаче, това все пак беше добър резултат. Не успяхме да извлечем ясен текст, но тогава този пример беше избран умишлено, защото представляваше предизвикателство.

Добро решение, когато имате нужда от него

OCR не е нещо, което ще трябва да използвате ежедневно. Въпреки това, когато възникне необходимост, е добре да знаете, че имате на ваше разположение една от най-добрите OCR машини.