Apakah ada modul python untuk mengkonversi file PDF menjadi teks? Saya mencoba sepotong kode yang ditemukan di Activestate yang menggunakan pypdf tetapi teks yang dihasilkan tidak memiliki ruang di antara dan tidak ada gunanya.
385
Apakah ada modul python untuk mengkonversi file PDF menjadi teks? Saya mencoba sepotong kode yang ditemukan di Activestate yang menggunakan pypdf tetapi teks yang dihasilkan tidak memiliki ruang di antara dan tidak ada gunanya.
Jawaban:
Coba PDFMiner . Itu dapat mengekstraksi teks dari file PDF sebagai format HTML, SGML atau "Tagged PDF".
Format Tagged PDF tampaknya paling bersih, dan menghapus tag XML hanya meninggalkan teks kosong.
Versi Python 3 tersedia di bawah:
sumber
The PDFMiner paket telah berubah sejak codeape diposting.
EDIT (lagi):
PDFMiner telah diperbarui lagi dalam versi
20100213
Anda dapat memeriksa versi yang telah Anda instal dengan yang berikut:
Ini versi terbaru (dengan komentar tentang apa yang saya ubah / tambahkan):
Edit (lagi):
Berikut ini adalah update untuk versi terbaru di pypi ,
20100619p1
. Singkatnya saya digantiLTTextItem
denganLTChar
dan melewati instance LAParams ke konstruktor CsvConverter.EDIT (sekali lagi):
Diperbarui untuk versi
20110515
(terima kasih kepada Oeufcoque Penteano!):sumber
LTTextItem
menjadiLTChar
. unixuser.org/~euske/python/pdfminer/index.html#changes20110515
per komentar Anda.Karena tidak ada solusi ini yang mendukung versi PDFMiner terbaru, saya menulis solusi sederhana yang akan mengembalikan teks pdf menggunakan PDFMiner. Ini akan bekerja untuk mereka yang mendapatkan kesalahan impor
process_pdf
Lihat kode di bawah ini yang berfungsi untuk Python 3:
sumber
python3
, selain tanda kurung jelas setelahprint
perintah, kita harus menggantifile
perintah denganopen
dan mengimporStringIO
dari paketio
Pdftotext Program open source (bagian dari Xpdf) yang dapat Anda panggil dari python (bukan apa yang Anda minta tetapi mungkin bermanfaat). Saya sudah menggunakannya tanpa masalah. Saya pikir google menggunakannya di google desktop.
sumber
-layout
opsi untuk menyimpan teks pada posisi yang sama seperti dalam PDF. Sekarang kalau saja saya bisa mencari cara untuk menyalurkan isi PDF ke dalamnya.pdftotext
tampaknya bekerja dengan sangat baik, tetapi perlu argumen kedua yang merupakan tanda hubung, jika Anda ingin melihat hasilnya di stdout.find . -iname "*.pdf" -exec pdftotext -enc UTF-8 -eol unix -raw {} \;
Secara default file yang dihasilkan mengambil nama asli dengan.txt
ekstensi.pyPDF berfungsi dengan baik (dengan asumsi Anda bekerja dengan PDF yang dibuat dengan baik). Jika semua yang Anda inginkan adalah teks (dengan spasi), Anda bisa melakukannya:
Anda juga dapat dengan mudah mendapatkan akses ke metadata, data gambar, dan sebagainya.
Sebuah komentar dalam catatan kode extractText:
Apakah ini masalah atau tidak tergantung pada apa yang Anda lakukan dengan teks (mis. Jika urutannya tidak masalah, itu baik-baik saja, atau jika generator menambahkan teks ke aliran dalam urutan yang akan ditampilkan, itu baik-baik saja) . Saya memiliki kode ekstraksi pyPdf dalam penggunaan sehari-hari, tanpa masalah.
sumber
Anda juga dapat dengan mudah menggunakan pdfminer sebagai pustaka. Anda memiliki akses ke model konten pdf, dan dapat membuat ekstraksi teks Anda sendiri. Saya melakukan ini untuk mengkonversi konten pdf ke teks yang dipisahkan semi-colon, menggunakan kode di bawah ini.
Fungsi ini hanya mengurutkan objek konten TextItem sesuai dengan koordinat y dan x mereka, dan menampilkan item dengan koordinat y yang sama dengan satu baris teks, memisahkan objek pada baris yang sama dengan ';' karakter.
Dengan menggunakan pendekatan ini, saya dapat mengekstraksi teks dari pdf yang tidak ada alat lain yang dapat mengekstraksi konten yang cocok untuk parsing selanjutnya. Alat lain yang saya coba meliputi pdftotext, ps2ascii dan alat online pdftextonline.com.
pdfminer adalah alat yang sangat berharga untuk pdf-scraping.
PEMBARUAN :
Kode di atas ditulis terhadap versi API yang lama, lihat komentar saya di bawah.
sumber
pdfminer
, bukanpdflib
). Saya sarankan Anda melihat sumberpdf2txt.py
dalam sumber PDFminer, kode di atas terinspirasi oleh versi lama file itu.slate
adalah proyek yang membuatnya sangat mudah untuk menggunakan PDFMiner dari perpustakaan:sumber
Saya perlu mengkonversi PDF tertentu ke teks biasa dalam modul python. Saya menggunakan PDFMiner 20110515, setelah membaca alat pdf2txt.py mereka, saya menulis cuplikan sederhana ini:
sumber
C:\Python27\Scripts\pdfminer\tools\pdf2txt.py
Repurposing kode pdf2txt.py yang datang dengan pdfminer; Anda dapat membuat fungsi yang akan mengambil jalur ke pdf; opsional, outtype (txt | html | xml | tag) dan memilih seperti commandline pdf2txt {'-o': '/path/to/outfile.txt' ...}. Secara default, Anda dapat menelepon:
File teks akan dibuat, saudara pada sistem file ke pdf asli.
sumber
PDFminer memberi saya mungkin satu baris [halaman 1 dari 7 ...] pada setiap halaman file pdf yang saya coba.
Jawaban terbaik yang saya miliki sejauh ini adalah pdftoipe, atau kode c ++ didasarkan pada Xpdf.
lihat pertanyaan saya untuk seperti apa output dari pdftoipe.
sumber
Selain itu ada PDFTextStream yang merupakan perpustakaan Java komersial yang juga dapat digunakan dari Python.
sumber
Saya telah menggunakan
pdftohtml
dengan-xml
argumen, membaca hasil dengansubprocess.Popen()
, yang akan memberikan x Coord, y Coord, lebar, tinggi, dan font, setiap potongan teks di pdf. Saya pikir inilah yang mungkin digunakan oleh 'evince' karena pesan kesalahan yang sama muncul.Jika Anda perlu memproses data berbentuk kolom, itu akan menjadi sedikit lebih rumit karena Anda harus menemukan algoritma yang sesuai dengan file pdf Anda. Masalahnya adalah bahwa program-program yang membuat file PDF tidak benar-benar menata teks dalam format logis apa pun. Anda dapat mencoba algoritme pengurutan sederhana dan kadang-kadang berfungsi, tetapi mungkin ada sedikit 'orang yang tersesat' dan 'tersesat', potongan-potongan teks yang tidak dimasukkan ke dalam urutan yang Anda pikir akan dilakukan. Jadi, Anda harus kreatif.
Butuh waktu sekitar 5 jam untuk mencari satu untuk pdf yang sedang saya kerjakan. Tapi itu bekerja dengan cukup baik sekarang. Semoga berhasil.
sumber
Menemukan solusi itu hari ini. Bekerja bagus untukku. Bahkan merender halaman PDF ke gambar PNG. http://www.swftools.org/gfx_tutorial.html
sumber