Apakah kamu memiliki banyak file ijazah dalam format PDF dan ingin mengambil Nomor Ijazah, Nama Siswa, Tempat Tanggal Lahir (TTL), NISN, serta Kompetensi Keahlian secara otomatis?
Jangan khawatir! Artikel ini akan membimbing kamu langkah demi langkah bagaimana mengekstrak data dari PDF secara otomatis dan cepat menggunakan Python di Google Colab.
1. Siapkan File PDF
Pastikan file ijazah dalam format PDF berisi teks (bukan gambar hasil scan), lalu beri nama ijazah.pdf
dan upload ke Google Colab melalui sidebar kiri.
2. Install Library yang Dibutuhkan
!pip install PyPDF2 pandas openpyxl
3. Script Lengkap Ekstraksi Data Ijazah
Salin dan jalankan script berikut di Google Colab:
import PyPDF2
import pandas as pd
import re
# Ganti dengan nama file PDF Anda jika berbeda
pdf_file_path = 'ijazah.pdf'
extracted_data = []
try:
with open(pdf_file_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
num_pages = len(reader.pages)
print(f"Mulai mengekstrak data dari {num_pages} halaman...")
for i in range(num_pages):
page = reader.pages[i]
text = page.extract_text()
no_ijazah = None
nama_siswa = None
ttl = None
nisn = None
bidang_program_kompetensi_keahlian = None
# Nomor Ijazah
ijazah_match = re.search(r'No\.\s*Ijazah:\s*(\d{15})', text, re.IGNORECASE)
if ijazah_match:
no_ijazah = ijazah_match.group(1).strip()
else:
ijazah_match_alt = re.search(r'No\.\s*Ijazah:\s*(\d+\s*\d+)', text, re.IGNORECASE)
if ijazah_match_alt:
no_ijazah = ijazah_match_alt.group(1).replace(" ", "").strip()
# Nama Siswa
nama_match = re.search(r'Dengan ini menyatakan bahwa:\s*\n\s*(.*?)\n', text, re.IGNORECASE | re.DOTALL)
if nama_match:
nama_siswa = nama_match.group(1).strip()
if "tempat, tanggal lahir" in nama_siswa:
nama_siswa = nama_siswa.split("tempat, tanggal lahir")[0].strip()
if "Nomor Induk Siswa Nasional" in nama_siswa:
nama_siswa = nama_siswa.split("Nomor Induk Siswa Nasional")[0].strip()
# TTL
ttl_match = re.search(r'tempat,\s*tanggal\s*lahir:\s*(.*?)\n', text, re.IGNORECASE)
if ttl_match:
ttl = ttl_match.group(1).strip()
# NISN
nisn_match = re.search(r'Nomor Induk Siswa Nasional:\s*(\d{9,10})', text, re.IGNORECASE)
if nisn_match:
nisn = nisn_match.group(1).strip()
# Kompetensi Keahlian / Program / Konsentrasi
kompetensi_keahlian_match = re.search(r'Kompetensi Keahlian\s*:\s*(.*?)\n', text, re.IGNORECASE)
if kompetensi_keahlian_match:
bidang_program_kompetensi_keahlian = kompetensi_keahlian_match.group(1).strip()
else:
konsentrasi_keahlian_match = re.search(r'Konsentrasi Keahlian\s*:\s*(.*?)\n', text, re.IGNORECASE)
if konsentrasi_keahlian_match:
bidang_program_kompetensi_keahlian = konsentrasi_keahlian_match.group(1).strip()
else:
program_keahlian_match = re.search(r'Program Keahlian\s*:\s*(.*?)\n', text, re.IGNORECASE)
if program_keahlian_match:
bidang_program_kompetensi_keahlian = program_keahlian_match.group(1).strip()
else:
bidang_keahlian_match = re.search(r'Bidang Keahlian\s*:\s*(.*?)\n', text, re.IGNORECASE)
if bidang_keahlian_match:
bidang_program_kompetensi_keahlian = bidang_keahlian_match.group(1).strip()
if no_ijazah or nama_siswa or nisn or ttl or bidang_program_kompetensi_keahlian:
extracted_data.append({
'Halaman': i + 1,
'No. Ijazah': no_ijazah,
'Nama Siswa': nama_siswa,
'Tempat, tanggal lahir': ttl,
'Nomor Induk Siswa Nasional': nisn,
'Bidang/Program/Kompetensi Keahlian': bidang_program_kompetensi_keahlian
})
print(f"Total {len(extracted_data)} data berhasil diekstraksi.")
df = pd.DataFrame(extracted_data)
df.to_excel('data_ijazah_SMK.xlsx', index=False)
print("Data lengkap berhasil disimpan ke 'data_ijazah_SMK.xlsx'.")
except FileNotFoundError:
print(f"Error: File '{pdf_file_path}' tidak ditemukan.")
except Exception as e:
print(f"Terjadi kesalahan: {e}")
4. Hasil Akhir
- File output akan bernama
data_ijazah.xlsx
- Berisi kolom:
- Halaman PDF ke-
- Nomor Ijazah
- Nama Siswa
- Tempat, Tanggal Lahir
- NISN
- Kompetensi/Program Keahlian
Tips Tambahan
- Pastikan PDF bukan hasil scan, tapi teks asli.
- Jika muncul error
look-behind requires fixed-width pattern
, hindari penggunaan regex dengan(?<=...)
yang panjangnya tidak pasti. - Gunakan tombol upload di sidebar Google Colab untuk mengunggah file PDF.
Share This :
0 komentar