Преобразование DJVU в PDF проблемы с этим кодом, сохраняющим OCR
Я хочу конвертировать DJVU в PDF, сохраняя при этом OCR. На этой странице описано, как это сделать, но я получаю пустой HTML-файл.
В / home / steven / Documents / djvu2pdf / 1 /, djvu2hocr -p 1 Intro.djvu
дает мне:
Converting 'Intro.djvu':
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ocr-system" content="djvu2hocr 0.7.9" />
<meta name="ocr-capabilities" content="ocr_carea ocr_page ocr_par ocrx_block ocrx_line ocrx_word" />
<title>DjVu hidden text layer</title>
</head>
<body>
*** [1-11711] Failed to open 'Intro.djvu': No such file or directory.
*** (ByteStream.cpp:693)
*** 'DJVU::GUTF8String DJVU::ByteStream::Stdio::init(const DJVU::GURL&, const char*)'
</body>
</html>
Traceback (most recent call last):
File "/usr/bin/djvu2hocr", line 7, in <module>
_.main(sys.argv)
File "/usr/share/ocrodjvu/lib/cli/djvu2hocr.py", line 325, in main
djvused.wait()
File "/usr/share/ocrodjvu/lib/ipc.py", line 114, in wait
raise CalledProcessError(return_code, self.__command)
subprocess.CalledProcessError: Command 'djvused' returned non-zero exit status 10
приводит к пустому HTML-файлу, поэтому, когда я запускаю
sed 's/ocrx/ocr/g' > pg1.html
он просто работает по неопределенному циклу.
У меня также есть дополнительная программа djvu2pdf, которую я нашел по адресу http://0x2a.at/s/projects/djvu2pdf, но
djvu2pdf Intro.djvu
дает мне
-e Error: /usr/bin/djvu2pdf: File 'Intro.djvu' not found
Файл OCR открывается нормально.
2 ответа
Я исправил файл /home/steven/Documents/djvu2pdf/1/Intro.djvu. Оказывается, все мои djvu-файлы не имели расширений, но в любом случае linux открывал их.
Тестирование с одностраничным документом
Я первый раз побежал cd /home/steven/Documents/djvu2pdf/1/
Затем побежал: djvu2hocr -p 1 1.djvu
DjVu hidden text layer
- Page #1
Traceback (most recent call last):
File "/usr/bin/djvu2hocr", line 7, in
_.main(sys.argv)
File "/usr/share/ocrodjvu/lib/cli/djvu2hocr.py", line 323, in main
process_page(page_zone, options)
File "/usr/share/ocrodjvu/lib/cli/djvu2hocr.py", line 263, in process_page
result = process_zone(None, page_text, last=True, options=options)
File "/usr/share/ocrodjvu/lib/cli/djvu2hocr.py", line 238, in process_zone
parent.append(child)
AttributeError: 'NoneType' object has no attribute 'append'
Команда:djvu2hocr -p 1 1.djvu > tmp.html
сделал то же самое
Converting '1.djvu':
- Page #1
Traceback (most recent call last):
File "/usr/bin/djvu2hocr", line 7, in
_.main(sys.argv)
File "/usr/share/ocrodjvu/lib/cli/djvu2hocr.py", line 323, in main
process_page(page_zone, options)
File "/usr/share/ocrodjvu/lib/cli/djvu2hocr.py", line 263, in process_page
result = process_zone(None, page_text, last=True, options=options)
File "/usr/share/ocrodjvu/lib/cli/djvu2hocr.py", line 238, in process_zone
parent.append(child)
AttributeError: 'NoneType' object has no attribute 'append'
sed 's/ocrx/ocr/g' tmp.html > pg1.html
Я получил html & tmp.html, говорящий это
Пришлось публиковать его там по какой-то нелепой причине. Этот сайт не позволил бы мне публиковать этот код, используя html, код, предварительные теги. Ни один из них не работал. Что же такое канал, тем более, где я пропустил его в этом посте.? Я новичок в терминале в Linux, просто учусь с помощью поисков Google
Сначала попробуйте запустить программу с полным путем к файлу. Запустите следующую команду, чтобы убедиться, что ваш файл существует
file /home/steven/Documents/djvu2pdf/1/Intro.djvu
а потом попробуй
djvu2hocr -p 1 /home/steven/Documents/djvu2pdf/1/Intro.djvu
Во-вторых, есть проблема с самой следующей командой:
sed 's/ocrx/ocr/g' > pg1.html
Это не будет выполняться "в бесконечном цикле", а будет просто ждать стандартного ввода (клавиатура в вашем случае), так как вы не запускаете sed с аргументом или как часть канала. sed не знает, какой файл вы хотите обработать.
На странице, на которую вы ссылаетесь, четко указано, что вы должны запускать ее как часть канала. Кроме того, вы можете сделать это следующим образом:
djvu2hocr -p 10 /home/steven/Documents/djvu2pdf/1/Intro.djvu > tmp.html
sed 's/ocrx/ocr/g' tmp.html > pg10.html