0% menganggap dokumen ini bermanfaat (0 suara)
20 tayangan3 halaman

Ekstraksi Data Ijazah SMK dengan PyPDF2

Dokumen ini adalah skrip Python yang digunakan untuk mengekstrak data dari file PDF ijazah SMK. Skrip ini menggunakan pustaka PyPDF2 untuk membaca PDF dan regex untuk mengekstrak informasi penting seperti nomor ijazah, nama siswa, tempat dan tanggal lahir, NISN, serta bidang/program/kompetensi keahlian. Data yang diekstrak kemudian disimpan dalam format Excel menggunakan pandas.

Diunggah oleh

master_551993844
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai TXT, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
20 tayangan3 halaman

Ekstraksi Data Ijazah SMK dengan PyPDF2

Dokumen ini adalah skrip Python yang digunakan untuk mengekstrak data dari file PDF ijazah SMK. Skrip ini menggunakan pustaka PyPDF2 untuk membaca PDF dan regex untuk mengekstrak informasi penting seperti nomor ijazah, nama siswa, tempat dan tanggal lahir, NISN, serta bidang/program/kompetensi keahlian. Data yang diekstrak kemudian disimpan dalam format Excel menggunakan pandas.

Diunggah oleh

master_551993844
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai TXT, PDF, TXT atau baca online di Scribd

import PyPDF2

import pandas as pd
import re

# Ganti dengan nama file PDF Anda jika berbeda


pdf_file_path = 'ijazah_SMK.pdf'

extracted_data = []

try:
with open(pdf_file_path, 'rb') as file:
reader = [Link](file)
num_pages = len([Link])

print(f"Mulai mengekstrak data dari {num_pages} halaman...")

for i in range(num_pages):
page = [Link][i]
text = page.extract_text()

no_ijazah = None
nama_siswa = None
ttl = None
nisn = None
bidang_program_kompetensi_keahlian = None # Variabel tunggal untuk
menampung salah satu dari ketiganya

# Regex untuk Nomor Ijazah


ijazah_match = [Link](r'No\.\s*Ijazah:\s*(\d{15})', text,
[Link])
if ijazah_match:
no_ijazah = ijazah_match.group(1).strip()
else:
ijazah_match_alt = [Link](r'No\.\s*Ijazah:\s*(\d+\s*\d+)', text,
[Link])
if ijazah_match_alt:
no_ijazah = ijazah_match_alt.group(1).replace(" ", "").strip()

# Regex untuk Nama Siswa


nama_match = [Link](r'Dengan ini menyatakan bahwa:\s*\n\s*(.*?)\n',
text, [Link] | [Link])
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()
else:
nama_match_alt = [Link](r'(?<=Yang bertanda tangan di bawah ini
menyatakan bahwa:\s*\n)(.*?)(?=\nNomor Induk Siswa Nasional)', text, [Link]
| [Link])
if nama_match_alt:
nama_siswa = nama_match_alt.group(1).strip()

# Regex untuk Tempat, Tanggal Lahir


ttl_match = [Link](r'tempat,\s*tanggal\s*lahir:\s*(.*?)\n', text,
[Link])
if ttl_match:
ttl = ttl_match.group(1).strip()

# Regex untuk Nomor Induk Siswa Nasional (NISN)


nisn_match = [Link](r'Nomor Induk Siswa Nasional:\s*(\d{9,10})',
text, [Link])
if nisn_match:
nisn = nisn_match.group(1).strip()

# Regex untuk Kompetensi Keahlian, Konsentrasi Keahlian, Program


Keahlian, atau Bidang Keahlian
# Prioritaskan Kompetensi Keahlian terlebih dahulu
kompetensi_keahlian_match = [Link](r'Kompetensi Keahlian\s*:\
s*(.*?)\n', text, [Link])
if kompetensi_keahlian_match:
bidang_program_kompetensi_keahlian =
kompetensi_keahlian_match.group(1).strip()
else:
konsentrasi_keahlian_match = [Link](r'Konsentrasi Keahlian\s*:\
s*(.*?)\n', text, [Link])
if konsentrasi_keahlian_match:
bidang_program_kompetensi_keahlian =
konsentrasi_keahlian_match.group(1).strip()
else:
program_keahlian_match = [Link](r'Program Keahlian\s*:\
s*(.*?)\n', text, [Link])
if program_keahlian_match:
bidang_program_kompetensi_keahlian =
program_keahlian_match.group(1).strip()
else:
bidang_keahlian_match = [Link](r'Bidang Keahlian\s*:\
s*(.*?)\n', text, [Link])
if bidang_keahlian_match:
bidang_program_kompetensi_keahlian =
bidang_keahlian_match.group(1).strip()

# Hanya tambahkan data jika setidaknya Nomor Ijazah ditemukan


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 # Kolom baru
})

print(f"Total {len(extracted_data)} data berhasil diekstraksi.")

# Buat DataFrame dari data yang diekstrak


df = [Link](extracted_data)

# Simpan DataFrame ke file Excel


output_excel_file = 'data_ijazah_SMK.xlsx'
df.to_excel(output_excel_file, index=False)
print(f"Data lengkap berhasil disimpan ke '{output_excel_file}'")

except FileNotFoundError:
print(f"Error: File '{pdf_file_path}' tidak ditemukan. Pastikan nama file dan
lokasi sudah benar.")
except Exception as e:
print(f"Terjadi kesalahan: {e}")

Anda mungkin juga menyukai