Eu tive que fazer isso para um arquivo PDF uma vez, e este foi o resultado (usando pdftohtml do 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 o zip ao Calibre e converta para EPUB. Filtre todas as propriedades CSS (como cores, fontes).
Cada arquivo PDF é diferente - não há solução definitiva. O exemplo acima funcionou para um caso específico - você precisa enfiar pdftohtml / pdftotext e ajustar a saída para atender às suas necessidades.
Se isso falhar e você precisar recorrer ao OCR, tive alguma sorte com o cuneiforme. Mas também tente tesseract, ocrad, gocr. No entanto, todos eles exigem trabalho manual para um bom resultado.