Ukryty tekst DjVu → ​​PDF?

2

Czy istnieje sposób na utworzenie pliku PDF tylko ukrytej warstwy tekstowej pliku DjVu?

Wiem jak używać

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

aby wygenerować skrypt DjVu, który zawiera współrzędne x, y każdego słowa na każdej stronie, ale jak przekonwertować to na PS lub PDF? Jestem pewien, że ktoś ma skrypt.

Plik dsed zaczyna się od S-wyrażeń takich jak ten ( kliknij tutaj, aby uzyskać więcej informacji ):

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

itp…

Dzięki

Geremia
źródło

Odpowiedzi:

0

Zaktualizowano po wprowadzeniu OP:

Aby wstawić warstwę OCR pliku DJVU do pliku PDF, czyli wydrukować słowa w miejscu, w którym pojawiają się w pliku DJVU, jedną z opcji jest programowe wygenerowanie pliku Inkscape lub Scribus. Naszkicuję procedurę. Napisanie skryptu w wybranym języku (Python, Ruby, Racket itp.) Nie jest trudne.

  1. Dla każdej strony pliku DJVU wyeksportuj warstwę OCR jako HTML lub jako wyrażenie S. Przyjmę to drugie w dalszej części.

  2. Wyodrębnij rozmiar strony z (page x1 y1 x2 y2.... Szerokość strony = x2-x1, Wysokość strony =y2-y1.

  3. Dla każdego słowa obliczyć szerokość, wysokość i współrzędne lewego dolnego rogu ramki tekstowej, która będzie go zawierała. To przekształca (word x1 y1 x2 y2 "another")się w ramkę tekstową z lewym dolnym rogiem na (x1, Page height - y1), szerokości x2 - x1i wysokości y2 - y1.

  4. Wybierz odpowiednią czcionkę i rozmiar czcionki dla ramki tekstowej. Użyj wysokości prostokątów słowa jako wskazówki. Upewnij się, że tekst nie jest rozciągnięty w celu dopasowania do ramki tekstowej.

  5. Po zakończeniu dodawania wszystkich ramek tekstowych do strony wyeksportuj plik do pliku PDF. Zauważ, że rozmiar strony jest znacznie większy niż Letter lub A4. Jeśli zamierzasz wydrukować dokument, przeskaluj go w oknie dialogowym drukowania, aby dopasować do rozmiaru papieru. Aby zapisać drzewa, najpierw wydrukuj do pliku PDF.

Oryginalna odpowiedź:

Zgodnie man djvusedz poleceniem 'output-txt'wygeneruje djvusedskrypt przeznaczony do użycia przez djvused.

Do swoich celów lepiej jest użyć (zgodnie ze stroną podręcznika)

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

Następnie możesz utworzyć plik PDF za pomocą programu, który może drukować do formatu PDF.

W zależności od systemu operacyjnego i wersji może być konieczne zainstalowanie drukarki PDF. Możesz go również otworzyć w najnowszej wersji Chrome lub Firefox i wydrukować do pliku PDF.

Marduk
źródło
Tak, ale pozycja tekstu w dokumencie PDF nie byłaby taka jak w przypadku DjVu.
Geremia
Zasadniczo potrzebuję skryptu do parsowania plików i utworzenia pliku PDF z tekstem o prawidłowych współrzędnych.
Geremia
To nie było jasne w pytaniu. Zobacz zaktualizowaną odpowiedź. Mam nadzieję, że to pomaga.
Marduk,
0

Najprostszym sposobem na to jest konwersja do DjVu na PDF (upewnienie się, że warstwa OCR jest zachowana w PDF). Następnie uruchomić:

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

gdzie użytkownik określa ${input_pdf}i ${output_pdf}. gsusuwa ( -dFILTERIMAGE) wszystkie obrazy i sedsprawia, że ​​PDF renderuje ukryty tekst OCR jako widoczny (zmieniając polecenie PDF 3 Trlub polecenie „ukrytego renderowania tekstu” na 0 Tr„domyślne renderowanie tekstu”). Ostatnie pdftkpolecenie nie jest absolutnie konieczne, ale pierwsze to, w przeciwnym sedrazie nie byłoby w stanie zmienić Trpolecenia PDF .

Geremia
źródło