Утилиты командной строки для OCR



Предыдущая |

 

Далее будут рассмотрены движки оптического распознавания символов, которые имеют интерфейс командной строки. Эта информация может пригодиться продвинутым пользователям, привыкшим иметь дело с консолью, а также пользователям OCRFeeder, поскольку эта программа умеет работать с каждым из рассмотренных ниже OCR инструментов, и знание их особенностей и различий помогут вам правильно выбрать используемый движок OCR:

Tesseract

ссылка

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

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

1
2
3
4
tesseract --help | --help-psm | --help-oem | --version
tesseract --list-langs [--tessdata-dir ПУТЬ]
tesseract --print-parameters [опции...] [конфигурационный файл...]
tesseract имя_изображения|stdin вывод|stdout [опции...] [конфигурационный файл...]

OCR опции:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  --tessdata-dir ПУТЬ   Указать путь расположения tessdata.
  --user-words ПУТЬ     Указать расположение пользовательского файла со словами.
  --user-patterns ПУТЬ  Указать расположение пользовательского файла с образцами.
  -l ЯЗЫК[+ЯЗЫК]        Указать язык(и), используемые для OCR.
  -c ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ          Установить значения конфигурационных переменных.
                        Разрешено использовать аргумент -c несколько раз.
  --psm ЧИСЛО             Указать режим сегментации страницы.
  --oem ЧИСЛО             Указать режим движка OCR.
ПРИМЕЧАНИЕ: Эти опции должны идти перед любым конфигурационным файлом.
 
Режимы сегментации страницы:
  0    Только ориентация и обнаружение скриптом (OSD).
  1    Автоматическая сегментация страницы с OSD.
  2    Автоматическая сегментация страницы но без OSD или OCR.
  3    Полностью автоматическая сегментация страницы, но без OSD. (По умолчанию)
  4    Предполагается единичная колонка текста переменной длины.
  5    Предполагается единый унифицированный блок вертикально выравненного текста.
  6    Предполагается единый унифицированный блок текста.
  7    Обрабатывать изображение как единичную текстовую строку.
  8    Обрабатывать изображение как единичное слово.
  9    Обрабатывать изображение как единичное слово в круге.
 10    Обрабатывать изображение как единичный символ.
 11    Разреженный текст. Найти столько текста, сколько возможно без особого порядка.
 12    Разреженный текст с OSD.
 13    Сырая строка. Обрабатывать изображение как единичную текстовую строку,
            обход специфичных для Tesseract хаков.
Режимы движка OCR:
  0    Только оригинальный Tesseract.
  1    Только Cube.
  2    Tesseract + cube.
  3    По умолчанию, основан на том, что доступно.
 
Единичные опции:
  -h, --help            Показать справку.
  --help-psm            Показать режимы сегментации страницы.
  --help-oem            Показать режимы движка OCR.
  -v, --version         Показать информацию о версии.
  --list-langs          Вывести список доступных языков для движка tesseract.
  --print-parameters    Напечатать параметры tesseract в stdout (стандартный вывод).

Обратите внимание на опцию -l, после которой нужно указать используемый язык. Если он не указан, то подразумевается английский. Можно указать несколько языков, разделённых знаком плюс. Tesseract использует 3-символьные коды языков ISO 639-2.

Доступны следующие языки:

  • afr (африканские)
  • amh (амхарский)
  • ara (арабский)
  • asm (ассамский)
  • aze (азербайджанский)
  • aze_cyrl (азербайджанский — кириллица)
  • bel (белорусский)
  • ben (бенгальский)
  • bod (тибетский)
  • bos (боснийский)
  • bul (болгарский)
  • cat (каталанский; валенсийский)
  • ceb (кебуанский)
  • ces (чешский)
  • chi_sim (китайский упрощённый)
  • chi_tra (китайский традиционный)
  • chr (Cherokee)
  • cym (валлийский)
  • dan (датский)
  • dan_frak (датский — Fraktur)
  • deu (германский)
  • deu_frak (германский — Fraktur)
  • dzo (Dzongkha)
  • ell (греческий, современный (1453-))
  • eng (английский)
  • enm (английский, средние века (1100-1500))
  • epo (эсперанто)
  • equ (математика / модуль распознавания уровнений)
  • est (эстонский)
  • eus (баскский)
  • fas (перситский)
  • fin (финский)
  • fra (французский)
  • frk (франкский)
  • frm (французский, средние века (ca.1400-1600))
  • gle (ирландский)
  • glg (галисийский)
  • grc (чреческий, древний (до 1453))
  • guj (гуджаратский)
  • hat (гаитянский; гаитянский креольский)
  • heb (иврит)
  • hin (хинди)
  • hrv (хорватский)
  • hun (венгерский)
  • iku (язык инуктитут)
  • ind (индонезийский)
  • isl (исландский)
  • ita (итальянский)
  • ita_old (итальянский старый)
  • jav (яванский)
  • jpn (японский)
  • kan (язык каннада)
  • kat (грузинский)
  • kat_old (грузинский старый)
  • kaz (казахский)
  • khm (центральный кхмерский)
  • kir (киргизский)
  • kor (корейский)
  • kur (курдский)
  • lao (лаосский)
  • lat (латинский)
  • lav (латышский)
  • lit (литовский)
  • mal (малаялам)
  • mar (маратхи)
  • mkd (македонский)
  • mlt (мальтийский)
  • msa (малайский)
  • mya (бирманский)
  • nep (непальский)
  • nld (голландский, фламандский)
  • nor (норвежский)
  • ori (ория)
  • osd (модуль определения ориентации и скриптов)
  • pan (пенджабский)
  • pol (польский)
  • por (португальский)
  • pus (пушту; пушто)
  • ron (румынский, молдавский)
  • rus (русский)
  • san (санскит)
  • sin (сингаль, сингальский)
  • slk (словацкий)
  • slk_frak (словацкий — Fraktur)
  • slv (словенский)
  • spa (испанский, кастильский)
  • spa_old (испанский, кастильский — старые)
  • sqi (албанский)
  • srp (сербский)
  • srp_latn (сербский — латинский)
  • swa (суахили)
  • swe (шведский)
  • syr (сирийский)
  • tam (тамильский)
  • tel (телугу)
  • tgk (таджикский)
  • tgl (тагальский)
  • tha (тайский)
  • tir (тигринья)
  • tur (турецкий)
  • uig (уйгуро; уйгурский)
  • ukr (украинский)
  • urd (урду)
  • uzb (узбекский)
  • uzb_cyrl (узбекский - кириллица)
  • vie (вьетнамский)
  • yid (идиш)

Ocrad

GNU Ocrad это OCR (Optical Character Recognition — оптическое распознавание символов) программа, основывающаяся на методе извлечения признаков. Она считывает битовую карту изображения в формате pgm/pbm и выдаёт текств в байтовом (8-бит) или UTF-8 форматах.

Ocrad включает анализатор разметки, способный разделять столбцы или блоки текста, какие обычно бывают на печатных страницах.

Для лучшего результата символы должны быть по крайней мере 20 пикселей в высоту. Если они меньше, попробуйте опцию --scale. Сканированные изображения на 300 dpi обычно дают размер символов достаточно хорошего размера для ocrad.

Слитые, очень смелые или очень светлые (сломанные) символы обычно не распознаются правильно. Старайтесь избегать их.

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

1
ocrad [опции] [файлы]

Опции:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-h, --help                показать справку и выйти
-V, --version             вывести информацию о версии и выйти
-a, --append              добавить текст к файлу вывода
-c, --charset=<имя>       попробуйте '--charset=help' для получения списка имён
-e, --filter=<имя>         попробуйте '--filter=help' для получения списка имён
-E, --user-filter=<файл>   определённый пользователем фильтр, смотрите мануал для получения форматов
-f, --force               принудительно переписать файл вывода
-F, --format=<fmt>        формат вывода (byte, utf8)
-i, --invert              инвертировать уравни изображения (белый на чёрном)
-l, --layout              выполнить анализ макета
-o, --output=<файл>       поместить вывод в <файл>
-q, --quiet               подавить все сообщения
-s, --scale=[-]<n>           масштабировать входное изображение на [1/]<n>
-t, --transform=<имя>     попробуйте '--transform=help' для получения списка имён
-T, --threshold=<n%>      порог для бинаризации (0-100%)
-u, --cut=<l,t,w,h>       обрезать входное изображение по заданному прямоугольнику
-v, --verbose             быть вербальной
-x, --export=<файл>       экспортировать результаты в формат ORF в <файл></n>

Если файлы не указаны, то ocrad считывает изображения из стандартного ввода. Если опция -o не указана, ocrad отправляет текст в стандартный вывод.

Статусы выхода: 0 для нормального выхода, 1 при проблемах в среде (файл не найден, неверные флаги, ошибки ввода/вывода и т.д.), 2 говорит о повреждённом или неверном файле ввода, 3 для ошибки внутренней консистенции (например, баг), которая вызвала панику в ocrad.

gocr

gocr — это мультиплатформенная программа распознавания текстов (OCR). Она принимает файлы изображений pnm, pbm, pgm, ppm, some pcx и tga. В настоящее время программа должна быть способна хорошо работать со сканами, в которых есть текст в один столбец и нет таблиц. Поддерживается размер шрифта от 20 до 60 пикселей.

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

gocr [options] pnm_file_name # use - for stdin

Опции (больше подробностей в мануале man gocr):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-h, --help
-i имя   - файл с изображением ввода (pnm,pgm,pbm,ppm,pcx,...)
-o имя   - файл вывода  (перенаправление stdout)
-e имя   - файл журналирования (перенаправление stderr)
-x имя   - перенаправление прогресса в fifo (смотрите мануал)
-p имя   - путь базы данных включает конечный слэш (по умолчанию это ./db/)
-f формат    - формат вывода (ISO8859_1 TeX HTML XML UTF8 ASCII)
-l число    - пороговый уровень серого 0<160<=255 (0 = автоопределение)
-d число    - dust_size (удаление маленьких кластеров, -1 = автоопределение)
-s число    - spacewidth/dots (0 = автоопределение)
-v число    - вербальность (смотрите мануал)
-c строка - список символов (отладка, смотрите мануал)
-C строка - фильтр символов (к примеру, шестнадцатеричные: 0-9A-Fx, только ASCII)
-m число    - режимы работы (bitpattern, смотрите мануал)
-a число    - величина точности (в процентах, 0..100, по умолчанию=95)
-u строка - вывести эту строку для каждого нераспознанного символа

Примеры:

Провести анализ разметки:

1
gocr -m 4 text1.pbm

Расширенная база данных:

1
gocr -m 130 -p ./database/ text1.pbm

Использовать файл jpeg переданный по трубе:

1
djpeg -pnm -gray text.jpg | gocr

Cuneiform

Cuneiform — это многоязычная система OCR (распознавания текста). В дополнении к распознаванию текста, она также анализирует разметку и распознаёт формат текста.

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

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

1
cuneiform [-l имя_языка -f формат --dotmatrix --fax --singlecolumn -o result_file] imagefile

Опции:

--dotmatrix

Режим распознавания оптимизирован для текстов, напечатанных на принтерах с точечной матрицей

--fax

Использовать режим распознавания, оптимизированный для текстов, переданных по факсу.

--singlecolumn

Отключить анализ разметки страницы и исходить из того, что изображение состоит из одной колонки текста.

-f формат

Выбрать формат вывода. Доступны следующие форматы:

  • html (HTML формат),
  • hocr (hOCR HTML формат),
  • native (родной формат Cuneiform 2000),
  • rtf (RTF формат),
  • smarttext (простой текст с TeX параграфами),
  • text (простой текст).

По умолчанию это plain text.

-l язык

По умолчанию Cuneiform распознаёт английский текст. Для изменения языка используйте переключатель командной строки, после -l после которого следует код языка (обычно трёхбуквенный код ISO 639-2).

Поддерживаются следующие языки:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
bul      Болгарский
cze      Чешский
dan      Датский
dut      Голландский
eng      Английский
est      Эстонский
fra      Французский
ger      Немецкий
hrv      Хорватский
hun      Венгерский
ita      Итальянский
lav      латышский
lit      Литовский
pol      Польский
por      Португальский
rum      Румынский
rus      Русский
ruseng   смешанный Русский/Английский
slv      Словенский
spa      Испанский
srp      Сербский
swe      Шведский
tur      Турецкий
ukr      Украинский

-o вывод

Если вы не указали файл вывода с переключателем -o, то Cuneiform запишет результаты в файл ‘cuneiform-out.format’. Расширение файла зависит от вашего формата вывода.

Форматы ввода

Cuneiform может обрабатывать любые изображения с единичной страницой, которые GraphicsMagick знает как открывать. Посмотрите мануала gm(1) для полного списка поддерживаемых форматов изображений.

ocropy

ocropy — это написанный на Python OCR пакет, использующий рекуррентные нейронные сети (ранее назывался OCRopus).

ocropy — это коллекция программ для анализа документов, это не простая OCR система, которая распознаёт тексты в графическом интерфейсе или с запуском одной команды. Функции ocropy разбиты на отдельные модули и, например, для простого распознавания текста может потребоваться ввести несколько команд для подготовки документа.

В дополнении к самим скриптам распознавания, имеется ряд скриптов для базового редактирования и коррекции, измерению процента ошибок, определению матриц путаницы и т. п.

Установка OCRFeeder в Arch Linux, BlackArch и их производные:

1
2
3
git clone https://aur.archlinux.org/ocropy.git
cd ocropy
makepkg -si