DjVu скрытый текст → PDF?

2

Есть ли способ сделать PDF только из слоя скрытого текста файла DjVu?

Я умею пользоваться

djvused myfile.djvu -e 'output-txt' > myfile.dsed

вывести сценарий DjVu, который включает координаты x, y каждого слова каждой страницы, но как мне преобразовать это в PS или PDF? Я уверен, что у кого-то есть сценарий.

Файл dsed начинается с таких S-выражений ( нажмите здесь для получения дополнительной информации ):

select; remove-txt

# ------------------------- 

select "myfile_0000.djvu"
set-txt
(page 108 107 1176 1725
 (column 941 1694 1176 1725
  (region 941 1694 1176 1725
   (para 941 1694 1176 1725
    (line 941 1694 1176 1725
     (word 941 1694 999 1723 "another")
     (word 1024 1696 1176 1725 "word")))))
 (column 108 107 805 1519
  (region 108 107 805 1519
   (para 226 1491 701 1519
    (line 226 1491 701 1519
     (word 226 1491 701 1519 "example")))
   (para 350 1370 534 1396

и т.д…

Спасибо

Geremia
источник

Ответы:

0

Обновлено после ввода OP:

Для того чтобы типизировать слой OCR файла DJVU в файл PDF, то есть напечатать слова в том месте, в котором они появляются в файле DJVU, один из вариантов заключается в программной генерации файла Inkscape или Scribus. Я нарисую процедуру. Нетрудно написать скрипт на выбранном вами языке (Python, Ruby, Racket и т. Д.).

  1. Для каждой страницы файла DJVU экспортируйте слой OCR как HTML или как S-выражение. Я буду предполагать последнее в следующем.

  2. Извлеките размер страницы из (page x1 y1 x2 y2.... Ширина страницы = x2-x1, Высота страницы =y2-y1.

  3. Для каждого слова рассчитайте ширину, высоту и координаты нижнего левого угла текстового фрейма, в котором он будет находиться. То есть превратить (word x1 y1 x2 y2 "another")в текстовую рамку с левым нижним углом (x1, Page height - y1), шириной x2 - x1и высотой y2 - y1.

  4. Выберите подходящий шрифт и размер шрифта для текстового фрейма. Используйте высоту прямоугольников слова в качестве руководства. Убедитесь, что текст не растянут по размеру текстового фрейма.

  5. Как только вы закончите добавление всех текстовых фреймов на страницу, экспортируйте файл в PDF. Обратите внимание, что размер страницы намного больше, чем буква или А4. Если вы собираетесь распечатать документ, масштабируйте его в диалоговом окне печати в соответствии с размером бумаги. Чтобы сохранить деревья, сначала распечатайте в файл PDF.

Оригинальный ответ:

Согласно man djvused, команда 'output-txt'сгенерирует djvusedскрипт, который предназначен для потребления djvused.

Для ваших целей лучше использовать (согласно man-странице)

djvused myfile.djvu -e 'print-pure-txt' > myfile.txt

Затем вы можете создать PDF-файл с помощью программы, которая может печатать в PDF.

В зависимости от вашей операционной системы и версии вам может потребоваться установить принтер PDF. Вы также можете открыть его в последней версии Chrome или Firefox и распечатать в PDF.

Мардук
источник
Да, но положение текста в документе PDF не будет таким, как в DjVu.
Геремия
По сути, мне нужен скрипт для разбора dsed файлов и создания PDF с текстом в правильных координатах.
Геремия
Это было не ясно в вопросе. Смотрите обновленный ответ. Надеюсь, это поможет.
Мардук
0

Самый простой способ сделать это - преобразовать DjVu в PDF (убедившись, что слой OCR поддерживается в PDF). Затем запустите:

gs -q -o - -dFILTERIMAGE -sDEVICE=pdfwrite -f "${input_pdf}" | pdftk - output - uncompress | sed "s/^3 Tr$/0 Tr/g" | pdftk - output "${output_pdf}" compress

где пользователь указывает ${input_pdf}и ${output_pdf}. gsудаляет ( -dFILTERIMAGE) все изображения и sedделает так, чтобы PDF отображал скрытый текст OCR как видимый (изменяя 3 Trкоманду PDF или «скрытый текст» на « 0 Trили текст по умолчанию»). Последняя pdftkкоманда не является строго необходимой, но первая - иначе, sedона не смогла бы изменить команду PDF Tr.

Geremia
источник