Распознавание текста

Russian forum

Moderator: posixru

Post Reply
User avatar
Andyun
Posts: 456
Joined: 17. Jun 2010, 09:51
Location: Russia: Severodvinsk / Россия: Северодвинск

Распознавание текста

Post by Andyun » 31. Mar 2012, 11:33

Мне понадобилось распознать русский текст книги в Linux. Для этого хорошо подошла связка Cuneiform с графическим интерфейсом Yagf, созданным русским программистом Андреем Боровским (благодарности Андрею!). Yagf может получать изображения со сканера через программу Xsane, интерфейс основан на Qt.

Cuneiform и Yagf собраны при помощи скриптов SlackBuilds.org.

Alex
Posts: 25
Joined: 10. Jan 2012, 16:39

Re: Распознавание текста

Post by Alex » 31. Mar 2012, 11:50

Пробовал отсканировать украинский текст через OpenOCR (та же cuneiform) - результат был, мягко говоря, не очень. Вернее его вообще почти не было. Хотя, может быть, если попариться с настройками, что-то бы и получилось, но т.к. мне это нужно было срочно, пришлось просить знакомого сканировать через FineReader.

User avatar
posixru
Posts: 440
Joined: 27. Mar 2010, 14:54
Location: СССР
Contact:

Re: Распознавание текста

Post by posixru » 1. Apr 2012, 12:14

Andyun wrote:Мне понадобилось распознать русский текст книги в Linux.
Есть ещё: OCRFeeder – Python / GTK+ интерфейс к нескольким консольным OCR приложениям. Он автоматически определяет наличие инсталлированных в системе OCR приложений, а именно CuneiForm, GOCR, Ocrad, Tesseract и использует их в качестве "движка". Можно выбрать какой из движков лучше распознает тот или иной текст, позволяет очистить исходное изображение, а для распознания структуры документа применяется собственный алгоритм. Есть пакет на pkgs.org
Image

User avatar
Andyun
Posts: 456
Joined: 17. Jun 2010, 09:51
Location: Russia: Severodvinsk / Россия: Северодвинск

Re: Распознавание текста

Post by Andyun » 1. Apr 2012, 12:52

OCRFeeder
Благодарю за подсказку!
Установив по указанной ссылке пакеты а также из GSlapt:
  • libgnome (для ocrfeeder-0.7.8 не нужно)
  • pil
  • linuxdoc-tools (не нужен для запуска, но необходим, если собирать пакет OCRfeeder самостоятельно)
удалось запустить программу, только вместо руссских букв в распознаваемом тексте отображались латинские. Чтобы это исправить, в настройках OCRfeeder: строка меню "Tools" --> "OCR Engines" --> кнопка "Изменить" --> в строке "Engine arguments:" --> нужно добавить "-l rus" в начале строки. В итоге вся строка выглядит так:

Code: Select all

-l rus -f text -o $FILE $IMAGE > /dev/null 2> /dev/null && cat $FILE && rm $FILE
Если на странице встречается алфавит русского и английского языков, то используйте параметр "-l ruseng", то есть

Code: Select all

-l ruseng -f text -o $FILE $IMAGE > /dev/null 2> /dev/null && cat $FILE && rm $FILE
В качестве системы распознавания используется Cuneiform. Чтобы увидеть буквенные обозначения поддерживаемых языков, наберите в терминале

Code: Select all

cuneiform -l
Для использования OCRfeeder с системой распознавания Tesseract (русский язык поддерживается с третей версии), строка "Engine arguments:" должна выглядить так:

Code: Select all

-l rus $IMAGE $FILE > /dev/null 2> /dev/null; cat $FILE.txt; rm $FILE $FILE.txt
---------------
Домашняя страница OCRfeeder: http://live.gnome.org/OCRFeeder.
Last edited by Andyun on 2. Oct 2012, 17:17, edited 2 times in total.

User avatar
Andyun
Posts: 456
Joined: 17. Jun 2010, 09:51
Location: Russia: Severodvinsk / Россия: Северодвинск

Re: Распознавание текста

Post by Andyun » 4. Apr 2012, 20:07

Установка Tesseract
Пакеты: В качестве графического интерфейса для Tesseract также хорошо подходит программа gImageReader (основана на GTK+, Python). Вот зависимости для неё: Попробовать gImageReader можно даже не устанавливая в систему - достаточно распаковать архив с исходным кодом и запустить файл "gimagereader-0.9/bin/gimagereader".
Вот SLKBUILD для сборки пакета gImageReader:

Code: Select all

pkgname=gimagereader
pkgver=0.9
pkgrel=111
source=("http://downloads.sourceforge.net/gimagereader/gimagereader-0.9.tar.gz")
docs=("readme" "install" "copying" "changelog" "authors" "news" "todo")
url=http://sourceforge.net/projects/gimagereader/


slackdesc=\
(
#|-----handy-ruler------------------------------------------------------|
"gimagereader (GUI for Tesseract-ocr)"
"gImageReader is a simple PyGtk front-end to tesseract-ocr"
""
"Homepage: http://sourceforge.net/projects/gimagereader/"
)


build() {
	cd $startdir/src/$pkgname-$pkgver
	./setup.py install --prefix=/usr --root=$startdir/pkg

	sed -i "s/^Categories=.*/Categories=Application;Office;/" $startdir/pkg/usr/share/applications/gimagereader.desktop
}
Есть ещё один симпатичный мне графический интерфейс для Tesseract - OcrGui, но у него есть один большой недостаток - отсутствие выделения блоков с текстом - распознаётся только всё изображение целиком, а это снижает качество распознавания.
Зависимости для OcrGui:
  • imagemagick
Last edited by Andyun on 10. Jun 2012, 09:30, edited 6 times in total.

User avatar
posixru
Posts: 440
Joined: 27. Mar 2010, 14:54
Location: СССР
Contact:

Re: Распознавание текста

Post by posixru » 4. Apr 2012, 21:20

Andyun wrote:Попробовать gImageReader можно даже не устанавливая в систему - достаточно
Я ещё с прошлого года её пользую, хоть не часто, но иногда нужна... В картинках можно посмотреть её ТУТ (цикл тем по OCR софинам попутно сделал).
Сравнивал распознавание с abbyy-finereader"овым, результат на одном изображении аналогичный.
Есть ещё такая штучка: Owlboxer - небольшая Qt графическая утилита дающая возможность быстрого редактирования обучающих файлов Tesseract (tesseract box files).
Image

User avatar
Andyun
Posts: 456
Joined: 17. Jun 2010, 09:51
Location: Russia: Severodvinsk / Россия: Северодвинск

Re: Распознавание текста

Post by Andyun » 4. Apr 2012, 21:33

posixru wrote: Сравнивал распознавание с abbyy-finereader"овым, результат на одном изображении аналогичный.
Это так, если изображение хорошего качества (разрешения, контраста и др.), а если оно недостаточно качественное, то FineReader v.10 заметно выигрывает, особенно это относится к распознаванию всей страницы целиком (без ручного выделения блоками). Пример для тестирования здесь.
Вообще, секрет лучшего распознавания FineReader'ом заключается в автоматической предварительной обработке изображений и автовыделении блоками (пример: размер исходных 92-х jpg-файлов составляет 76 Мбайт, размер же сохранённого проекта с этими файлами у FineReader'а составлял более 2 Гбайт). Если самостоятельно увеличить разрешение у страниц невысокого качества и улучшить контрастность, а также вручную выделять текст блоками, то Tesseract и CuneiForm действительно не будут уступать коммерческим аналогам.
Last edited by Andyun on 5. Apr 2012, 12:31, edited 4 times in total.

User avatar
posixru
Posts: 440
Joined: 27. Mar 2010, 14:54
Location: СССР
Contact:

Re: Распознавание текста

Post by posixru » 4. Apr 2012, 22:20

Andyun wrote:а если оно недостаточно качественное, то FineReader v.10 заметно выигрывает.
Да мне без разницы, мне спешить некуда, я изо могу пропереобработать, а уж потом сувать в распознавалку... Обычно в gThumb"е, но можно в GIMP"е или Phatch"е если много и потом уже... Примерно вот так (если в два клика):

Image
Image

User avatar
Andyun
Posts: 456
Joined: 17. Jun 2010, 09:51
Location: Russia: Severodvinsk / Россия: Северодвинск

Re: Распознавание текста

Post by Andyun » 10. Jun 2012, 10:28

Перед распознаванием, или даже вместо него, изображения можно обработать и создать качественную электронную копию документа (книги) в формате DjVu. Подробности в отдельной теме.

Post Reply