eddy_em: (Default)
[personal profile] eddy_em
Сидел я последние несколько часов и занимался тем, что вручную набивал то же самое, что написано в pdf-файле (нераспознанном). Плюнул на это, поставил cuneiform и к нему графическую морду — yagf.

Внимание! В yagf есть опция "импортировать pdf". Я сдуру выбрал ее (у меня 27-страничный pdf, не думал я, что он может так раздуться), и yagf начал при помощи pdf2ppm импортировать файл. Похоже, выбрал он довольно "крутое" разрешение, т.к. после 20-й страницы yagf отожрал уже 1.6ГБ оперативки и система начала жалобно отваливаться. Т.к. у меня уже вторую неделю Octave пыхтит-считает, я решил не испытывать произвола судьбы от oom-killer'а и при помощи всяких разных клавиатурных комбинаций и top'а убил-таки эту штуку.
Позже оказалось, что yagf вполне адекватен, если картинки "попроще". Но его использовать неудобно - зачем нам лишняя сущность?
Так был рожден скриптик:

#!/bin/sh
# this script has been written by Eddy 
#
#		recognize_pdf - распознает pdf-файлы при помощи cuneiform
# зависит от cuneiform и pdftoppm
#
# Создан 25-го Апрель 2012 года в 18:12
#

if [ $# == 0 ]; then
	echo -e "\nUsage: $(basename $0) filename.pdf,\n\tneeds some space for temporary ppm-files,\n\tsaves results to file filename.txt\n"
	exit -1
fi

NAME=$(bsnm $1)

# 1. Преобразуем pdf в ppm'ы
echo -e "\nConvert pdf to a lot of ppms"
pdftoppm $1 $NAME

# 2. Распознаем каждый рисунок
echo -e "\nRecognize every file\n"
for PPM in $(ls -1 ${NAME}-*ppm)
do
	echo -n "$PPM .. "
	cuneiform -l ruseng -f smarttext ${PPM} -o ${PPM}.txt
	echo "done!"
done

# 3. Собираем все вместе
rm -f ${NAME}.txt
cat $(ls -1 ${NAME}-*txt) > ${NAME}.txt

# 4. Подчищаем мусор
echo -n "Ready, cleaning ..."

rm -f ${NAME}-*.txt ${NAME}-*.ppm

echo "Done!"

Все отлично заработало. Правда, есть одно "но": cuneiform сохраняет данные в UTF-8, а iconv и enconv отказались конвертировать мне эти файлы в нормальную кодировку. Ничего, из этого я тоже найду выход.

UPD: Ключик -c для iconv спас меня.

Date: 2012-04-25 03:29 pm (UTC)
From: [identity profile] http://users.livejournal.com/__const__/
Только про iconv -с писать собрался, как добрался до UPD ;)
Тоже в своё время долго без внимательного чтения манов страдал.

А разрешение yagf реально должен очень большое выбирать.
Опыты показали, что даже идеальный текст, сконвертированный в 150dpi cuneiform распознаёт чрезвычайно плохо. После 600dpi уже всё замечательно. Подозреваю, что оно делало 600dpi у вас. Возможно — в цвете ;)

UPD: когда-ж я приучу себя аналогичным образом свои скрипты комментировать и оформлять ;(
Edited Date: 2012-04-25 03:31 pm (UTC)

Date: 2012-04-25 04:35 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
> Опыты показали, что даже идеальный текст, сконвертированный в 150dpi cuneiform распознаёт чрезвычайно плохо

У меня 150dpi распозналось отлично. Тем более, что pdf'ки были сканированы не очень качественно (подозреваю, что там вообще ~100dpi было).

> UPD: когда-ж я приучу себя аналогичным образом свои скрипты комментировать и оформлять ;(

Я приучился комментировать после того, как приходилось несколько раз ковыряться в тоннах старого кода, чтобы подправить. Без комментариев было довольно сложно разобраться, что там к чему (особенно когда это сишные функции, разбросанные по нескольким файлам)…

Date: 2012-04-25 05:32 pm (UTC)
From: [identity profile] http://users.livejournal.com/__const__/
У меня 150dpi распозналось отлично.

Ну, значит что-то подправили. Когда оно появилось под Линукс (точнее, морда появилась), я поэкспериментировал с ним и для себя решил: 600dpi — самое оно.

Я приучился комментировать после того, как приходилось несколько раз ковыряться в тоннах старого кода, чтобы подправить.

Мне такие ковыряния на пользу не идут ;(

Date: 2012-05-02 07:21 am (UTC)
From: [identity profile] dancing-apsara.livejournal.com
а я сдуру сохранила отсканеную книжку на нем языке в ртф. сижу теперича, кумекаю, принскрином пользоваться или как? ;))

Date: 2012-05-02 07:27 am (UTC)
From: [identity profile] eddy-em.livejournal.com
попробуй его открыть в либреофисе, потом сохранить как .odt, а потом натравить на этот odt обычный unzip. Получишь содержимое. В нем в директории Pictures найдешь все картинки.

Date: 2012-05-02 07:41 am (UTC)
From: [identity profile] dancing-apsara.livejournal.com
не. мне как обычно лень разбираться в мануалах ;) просто cuneiform распознает без заморочек отсканеный текст, сохраненный в жпеге. а всяческие тама ртф-ы не хотит. то есть может и хотит, но его надоть долго просить об этом, с бубном и всяечкими жертвоприношениями. я ж говорю, лень було разбираться. ;))

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 10:04 pm
Powered by Dreamwidth Studios