Search what you want

Wednesday, December 23, 2015

Convert PDF to plain text using python

salah satu projek akhir dalam kuliah semester ini yaitu melakukan pengolahan text. Salah satu yang membuat saya tertarik yaitu pengolahan text untuk peringkasan. Pada aartikel ini akan dijelaskan bagaimana unutk membuat plain text ya dahulu sebagai langkah awal dalam pengolahann text.

langsung saja ikuti langkah-langkah berikut
1. install pyPDF
$ sudo apt-get install python-pypdf
2. siapkan file pdf yang akan di extraksi filenya

3. tuliskan program berikut
import sys
import pyPdf

def getPDFContent(path):
    content = ""
    # Load PDF into pyPDF
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    # Iterate pages
    for i in range(0, pdf.getNumPages()):
        # Extract text from page and add to content
        content += pdf.getPage(i).extractText() + " \n"
    # Collapse whitespace
    content = u" ".join(content.replace(u"\xa0", u" ").strip().split())
    return content
print getPDFContent(sys.argv[1]).encode("ascii", "ignore")
4. jalankan program
$ python <nama file program> <directory dan nama file pdf>
$ python readpdf.py jurnal.pdf
5. melakukan penyimpanan ke file secara langsung
$ python readpdf.py jurnal.pdf >> hasil.txt
    ketika menjalankan command diatas, terdapat pesan error
Traceback (most recent call last):
  File "readpdf.py", line 15, in <module>
    print getPDFContent(sys.argv[1])
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb5' in position 14848: ordinal not in range(128)
    kenapa hal itu terjadi? hal tersebut dapat terjadi karena karakter ascii tidak bisa di decode melebihi range yang telah ditentukan. bagaimana caranya?
tambahkan code yang dicetak tebal
import sys
import pyPdf

def getPDFContent(path):
    content = ""
    # Load PDF into pyPDF
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    # Iterate pages
    for i in range(0, pdf.getNumPages()):
        # Extract text from page and add to content
        content += pdf.getPage(i).extractText() + " \n"
    # Collapse whitespace
    content = u" ".join(content.replace(u"\xa0", u" ").strip().split())
    return content
print getPDFContent(sys.argv[1]).encode("ascii", "ignore")
jalankan kode sebelumnya
$ python readpdf.py jurnal.pdf >> hasil.txt
lihat hasilnya di folder dimana kita meletakkan file program python-nya (readpdf.py)

6. Full code
import sys
import pyPdf

def getPDFContent(path):
    content = ""
    # Load PDF into pyPDF
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    # Iterate pages
    for i in range(0, pdf.getNumPages()):
        # Extract text from page and add to content
        content += pdf.getPage(i).extractText() + " \n"
    # Collapse whitespace
    content = u" ".join(content.replace(u"\xa0", u" ").strip().split())
    return content
#print getPDFContent(sys.argv[1]).encode("ascii", "ignore")
f = open(sys.argv[1]+'.txt','w+')
f.write(getPDFContent(sys.argv[1]).encode("ascii", "ignore"))
f.close()
jalankan kode
$ python readpdf.py jurnal.pdf
lihat hasilnya dengan nama file jurnal.pdf.txt

==========================contoh Code Lainnya==============
nama file : <tki.py>
file pdf : <jurnal.pdf>
import pyPdf
pdf = pyPdf.PdfFileReader(open("jurnal.pdf", "rb"))
for page in pdf.pages:
    print page.extractText().encode("ascii", "ignore")
jalankan kode
$ python tki.py >> hasil.txt
bandingkan hasil.txt dengan kode diatas sebelumnya

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Sekian~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


No comments:

Post a Comment