Необходимо создать удар с лучшим бизоном (yacc) на хосте. Bash использует yacc грамматические правила, и только бизон GNU сгенерирует корректный код парсинга для сборки Bash.
Необходимо попробовать pdftotext
(существует в соответствии с Ubuntu пакета poppler-utils
). Это - преобразователь командной строки. Это предполагает, что PDF имеет текст и не состоит из изображений только.
Если файл PDF состоит из изображений (без информации о OCR), необходимо пойти для решения OCR, которое намного медленнее.
Я успешно использовал метод OCR также на тексте PDF, который был скремблирован (путем расположения отдельных символов на странице нелинейным способом). Затем Вы используете, например. pdftoppm
получить отдельные изображения страниц и OCR они.
Я обычно использую Калибр, для преобразования из различных форматов (epub, mobi, и PDF). Это довольно просто для преобразования с ним, вот снимок экрана, существуют другие и видео учебное руководство также.
Я должен был сделать это для файла PDF однажды, и это было результатом (использующий pdftohtml от poppler):
#!/bin/bash
pwddir="`pwd`"
tmpdir="`mktemp -d`"
pdftohtml -enc UTF-8 -noframes -p -nomerge -nodrm -q "$1" "$tmpdir"/index
cd "$tmpdir"
sed -e :a -e '$!N;s/\n/ /;ta' \
-i index.html
sed -e 's@ @ @g' \
-e 's@<hr>@ @g' \
-e 's@<br/>\s*<br/>@</p><p>@g' \
-e 's@<br/>@ @g' \
-i index.html
tidy -utf8 -i -wrap 9999999 -m index.html
sed -e 's@<a name="[^"]*"></a>@@g' \
-i index.html
rm "$pwddir"/"$1".zip
zip "$pwddir"/"$1".zip *
Подайте zip к Калибру и преобразуйте в EPUB. Отфильтруйте все свойства CSS (такие как цвета, шрифты).
Каждый файл PDF отличается - нет никакого категорического решения. Вышеупомянутое работало на один конкретный случай - Вы имеете к слабому pdftohtml/pdftotext и затем настраиваете вывод для установки потребностям.
Если это перестало работать, и необходимо обратиться к OCR, у меня была некоторая удача с клинообразным знаком. Но также и попробуйте tesseract, ocrad, gocr. Однако все те требуют физического труда для хорошего результата.