Tuve que hacer esto para un archivo PDF una vez, y este fue el resultado (usando pdftohtml de 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 *
Alimente el zip a Calibre y conviértalo a EPUB. Filtra todas las propiedades CSS (como colores, fuentes).
Cada archivo PDF es diferente, no existe una solución definitiva. Lo anterior funcionó para un caso específico: debe debilitar pdftohtml / pdftotext y luego ajustar la salida para satisfacer sus necesidades.
Si esto falla y tienes que recurrir a OCR, he tenido suerte con cuneiforme. Pero también prueba tesseract, ocrad, gocr. Sin embargo, todos ellos requieren mano de obra para un buen resultado.