Saya menggunakan pdftotext
untuk membuat versi ASCII dari dokumen PDF (dibuat dengan LaTeX), karena kolaborator lebih suka dokumen sederhana dalam MS Word.
Versi teks biasa yang saya lihat terlihat bagus, tetapi setelah diperiksa lebih dekat karakter f tampaknya sering salah dikonversi tergantung pada karakter apa yang mengikuti. Sebagai contoh, fi dan fl sering tampak menjadi satu karakter khusus, yang akan saya coba tempel di sini: fi dan fl.
Apa cara terbaik untuk membersihkan output pdftotext? Saya berpikir sed
mungkin alat yang tepat, tetapi saya tidak yakin bagaimana mendeteksi karakter khusus ini.
pdftotext
dari poppler, kanpdftotex
?ebook-convert
dari kaliber ( calibre-ebook.com ) daripadapdftotext
. Ini memungkinkan output teks biasa (dan berbagai format lainnya), dan menangani ligatur untuk Anda.siunitx
danglossaries
, dan karena itu sepertinya mengirim melalui PDF adalah solusi terbaik. Saya berharap ada cara yang lebih baik.Jawaban:
Secara default,
pdftotext
menampilkan data unicode (UTF-8). Jika terminal atau editor teks Anda tidak mendukung UTF-8, ligatur seperti "fi" dan "fl" (yang dapat direpresentasikan sebagai karakter tunggal dalam unicode) akan tampak aneh, seperti yang Anda perhatikan.Perbaikan sederhana adalah dengan memberitahu
pdftotext
keluaran ASCII bukan unicode:Ini akan menghasilkan output ASCII yang bersih, menghilangkan kebutuhan Anda untuk membersihkannya secara manual sesudahnya.
sumber
ebook-convert
saran di atas sebagai yang terbaik. Saran Anda mungkin meningkatkan perilaku defaultpdfottext
, tetapi saya pikir terminal saya mendukung UTF-8, danebook-convert
tampaknya menangani superskrip dan hal-hal lain dengan lebih baik.Dengan asumsi Anda menggunakan beberapa jenis sistem berbasis Unix, Anda dapat menjalankan ini pada output dari pdftotext:
Itu harus mengganti ligatur dengan masing-masing huruf yang mereka masuki. (Lihat komentar saya di atas untuk apa hubungan ligatur dengan ini.)
Saya mengujinya pada file teks yang dihasilkan
pdftotext
dari PDF yang dihasilkan LaTeX. Dan itu bekerja dengan baik. Tetapi jika LaTeX menggunakan pengkodean atau font yang tidak standar dengan ligatur tambahan mungkin ada lebih banyak yang harus dilakukan.Anda mungkin ingin memastikan font yang Anda gunakan di terminal Anda memiliki karakter untuk ligatures f-series. DejaVu Sans Mono adalah pilihan yang baik.
sumber
sed -e 's/\\xEF\\xAC\\x80/ff/g' -e 's/\\xEF\\xAC\\x81/fi/g' -e 's/\\xEF\\xAC\\x82/fl/g' -e 's/\\xEF\\xAC\\x83/ffi/g' -e 's/\\xEF\\xAC\\x84/ffl/g' -e 's/\\xEF\\xAC\\x85/ft/g' -e 's/\\xEF\\xAC\\x86/st/g'
.