Using Regular Expression to Extract Specific Information Through PyPDF2
Question:
Any insight on a particular regex to hit the following words within the document?
Nama Perseroan :PELABUHAN PATIMBAN INTERNASIONAL
Nama Singkatan :
Nomor SP Data
Perseroan:AHU-AH.01.09-0073201
Tanggal SP Data
Perseroan:07 November 2022
Jenis Perseroan :SWASTA NASIONAL
NPWP Perseroan :413909557014000DATA PERSEROANRESMI DARI DITJEN AHU
Jangka Waktu Perseroan :TIDAK TERBATAS
Status Perseroan :TERTUTUP
Nomor Telepon :0217917553
Jenis Transaksi :PERUBAHAN
The full document text looks something like the listed below.
PROFIL PERUSAHAAN PT PELABUHAN PATIMBAN INTERNASIONAL
Nama :JONATHAN LOH
Email :[email protected]
Nomor HP :90018240982109381209821093
Tanggal Permohonan :16 November 2022 pukul 16:48:33
Tanggal Pembayaran:22 November 2022 pukul 08:44:38
Tujuan Permohonan:lkasjfasdflksdjflkas jflasjflkasjfalsjflaksjDIMOHONKAN OLEH
Waktu Unduh PDF :16 Desember 2022 pukul 13:36:19
Telah diunduh :1 kali INFORMASI BERKAS PDF
VERIFIKASI BERKAS PDF
7. Pemberitahuan Perubahan Data Perseroan Jenis Perubahan :1. Pemberitahuan Perubahan Data Perseroan
- Direksi dan KomisarisJENIS PERUBAHAN
Nama Perseroan :PELABUHAN PATIMBAN INTERNASIONAL
Nama Singkatan :
Nomor SP Data
Perseroan:AHU-AH.01.09-0073201 Tanggal SP Data Perseroan:07 November 2022
Jenis Perseroan :SWASTA NASIONAL
NPWP Perseroan:413909557014000DATA PERSEROANRESMI DARI DITJEN AHU
Jangka Waktu Perseroan :TIDAK TERBATAS
Status Perseroan :TERTUTUP
Nomor Telepon:0217917553
Jenis Transaksi :PERUBAHAN
Nama Notaris :DEDY SYAMRI, S.H.
Kedudukan Notaris :JAKARTA SELATAN
Nomor Akta :5
Tanggal Akta :07 November 2022DATA NOTARIS
Alamat :Menara Bank Mega, Lantai 24, Jl.Kapten P Tendean
Kav. 12-14A
RT :002
RW :002
Kode Pos :12790
Kelurahan:MAMPANG PRAPATAN
Kecamatan :MAMPANG PRAPATAN
Kabupaten :JAKARTA SELATAN
Provinsi :DKI JAKARTAKEDUDUKAN PERSEROAN
Data KBLI Tahun :2017
NoKode
KBLIJudul KBLI Uraian KBLI
152221 AKTIVITAS
PELAYANAN
KEPELABUHANAN
LAUTKelompok ini mencakup kegiatan usaha pelayanan
kepelabuhan laut, yang berhubungan dengan angkutan perairan untuk
penumpang, hewan atau barang, seperti pengoperasian fasilitas terminal
misalnya pelabuhan dan dermaga, operasi penguncian jalur air dan
lain-lain, navigasi, pelayaran dan kegiatan berlabuh, jasa penambatan
dan jasa pemanduanMAKSUD DAN TUJUAN Klasifikasi SahamHarga Per
LembarJumlah Lembar SahamTotal
- Rp. 1000 40.000.000 Rp. 40.000.000.000MODAL DASAR Klasifikasi SahamHarga Per LembarJumlah Lembar SahamTotal
- Rp. 1000 10.000.000 Rp. 10.000.000.000MODAL DITEMPATKANRESMI DARI DITJEN AHU Rp 10.000.000.000 Dalam bentuk uang.MODAL DISETOR Nama
Jabatan AlamatKlasifikasi
SahamJumlah
Lembar
SahamTotal
ALIF SASETYO,
NIK: 3171060201830005
NPWP: 246383541071000
TTL: Jakarta, 02 Januari 1983DIREKTUR Jalan
Maluku
Nomor 19- - -
ARIEF HERMAWAN,
NIK: 1271121011700003
NPWP: 070970173112000
TTL: Bogor, 10 November 1970KOMISARIS BNR
Cluster
Cendana
C 5/19- - -
ARLAN SEPTIA ANANDA
RASAM,
NIK: 3174051209620003
NPWP: 080878200013000
TTL: Jakarta, 12 September
1962KOMISARIS Jalan
Bendi
IX/125- - -
CHAIRAL TANJUNG,
NIK: 3171011605660004
NPWP: 070141650093000
TTL: Jakarta, 16 Mei 1966WAKIL
KOMISARIS
UTAMAJalan
Besuki Nomor 9- - -
FUAD RIZAL,
NIK: 3174010201780008
NPWP: 488337379015000
TTL: Jakarta, 02 Januari 1978DIREKTUR
UTAMATebet
Barat
Dalam- - -
Ir. R AGUS HARYOTO
PURNOMO,
NIK: 3578032408610001
NPWP: 097468813615000
TTL: SLEMAN, 24 Agustus 1961KOMISARIS
UTAMARUNGKUT
ASRI
TIMUR
14/35- - -
PT CTCORP INFRASTRUKTUR
INDONESIA,
Nomor SK :-- Menara
Bank
Mega,
Lantai 24,
Jalan
Kapten
Pierre
Tendean
Kavling
12-14A- 3.200.000 Rp.3.200.000.000
PT INTERPORT PATIMBAN
AGUNG,
Nomor SK :-- Graha
Mitra
Lantai 7,
Jalan
Jenderal
Gatot
Subroto
Kavling 21- 2.900.000 Rp.2.900.000.000
PT PATIMBAN MAJU BERSAMA,
Nomor SK :AHU-
0061318.AH.01.01.TAHUN 2021
Tanggal SK :30 September 2021- Menara
MTH
Lantai 11,
jalan MT
Haryono,
kavling 23- 2.900.000 Rp. 2.900.000.000
PT TERMINAL PETIKEMAS
SURABAYA,
Nomor SK :-- Jalan
Tanjung
Mutiara
Nomor 1- 1.000.000 Rp. 1.000.000.000PENGURUS DAN PEMEGANG SAHAM
RESMI DARI DITJEN AHU
Nama Jabatan AlamatKlasifikasi
SahamJumlah
Lembar
SahamTotal
YUKKI NUGRAHAWAN HANAFI,
NIK: 3174060211670004
NPWP: 093240992016000
TTL: Jakarta, 02 November 1967KOMISARIS Jalan
Cibulan II
nomor 15- - -
RESMI DARI DITJEN AHU
I intend to use PyPDF2 to extract, and is using the re library from python to extract the match text as intended. Below is the code that I tried implementing.
import PyPDF2
import re
import pprint
import camelot
pdf_file = 'PDF/File.pdf'
with open(pdf_file, 'rb') as pdf_file:
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
page_nums = pdf_reader.numPages
for page_num in range(page_nums):
page = pdf_reader.getPage(page_num)
text = page.extractText()
string = text
found = re.search('[A-Z]+[A-Z]+$', string)
if found:
print(found.group())
else:
print('Not found')
Answers:
import PyPDF2
import re
class Company: # Filters and extract only company profile within the PDF file
pdf_file = 'PDF/File.pdf'
with open(pdf_file, 'rb') as pdf_file:
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
page_nums = pdf_reader.numPages
for page_num in range(page_nums):
page = pdf_reader.getPage(page_num)
text = page.extractText()
found = re.findall(r'((?:[A-Z][a-z]+s*)+)bs*:s*(.*?)s*(?=(?:[A-Z][a-z]+s*)+:|$)', text)
if found:
print(found)
else:
print('Not found')
Allows us to filter out the specific information indicated on the question column.
Any insight on a particular regex to hit the following words within the document?
Nama Perseroan :PELABUHAN PATIMBAN INTERNASIONAL Nama Singkatan : Nomor SP Data Perseroan:AHU-AH.01.09-0073201 Tanggal SP Data Perseroan:07 November 2022 Jenis Perseroan :SWASTA NASIONAL NPWP Perseroan :413909557014000DATA PERSEROANRESMI DARI DITJEN AHU Jangka Waktu Perseroan :TIDAK TERBATAS Status Perseroan :TERTUTUP Nomor Telepon :0217917553 Jenis Transaksi :PERUBAHAN
The full document text looks something like the listed below.
PROFIL PERUSAHAAN PT PELABUHAN PATIMBAN INTERNASIONAL Nama :JONATHAN LOH Email :[email protected] Nomor HP :90018240982109381209821093 Tanggal Permohonan :16 November 2022 pukul 16:48:33 Tanggal Pembayaran:22 November 2022 pukul 08:44:38 Tujuan Permohonan:lkasjfasdflksdjflkas jflasjflkasjfalsjflaksjDIMOHONKAN OLEH Waktu Unduh PDF :16 Desember 2022 pukul 13:36:19 Telah diunduh :1 kali INFORMASI BERKAS PDF VERIFIKASI BERKAS PDF 7. Pemberitahuan Perubahan Data Perseroan Jenis Perubahan :1. Pemberitahuan Perubahan Data Perseroan - Direksi dan KomisarisJENIS PERUBAHAN Nama Perseroan :PELABUHAN PATIMBAN INTERNASIONAL Nama Singkatan : Nomor SP Data Perseroan:AHU-AH.01.09-0073201 Tanggal SP Data Perseroan:07 November 2022 Jenis Perseroan :SWASTA NASIONAL NPWP Perseroan:413909557014000DATA PERSEROANRESMI DARI DITJEN AHU Jangka Waktu Perseroan :TIDAK TERBATAS Status Perseroan :TERTUTUP Nomor Telepon:0217917553 Jenis Transaksi :PERUBAHAN Nama Notaris :DEDY SYAMRI, S.H. Kedudukan Notaris :JAKARTA SELATAN Nomor Akta :5 Tanggal Akta :07 November 2022DATA NOTARIS Alamat :Menara Bank Mega, Lantai 24, Jl.Kapten P Tendean Kav. 12-14A RT :002 RW :002 Kode Pos :12790 Kelurahan:MAMPANG PRAPATAN Kecamatan :MAMPANG PRAPATAN Kabupaten :JAKARTA SELATAN Provinsi :DKI JAKARTAKEDUDUKAN PERSEROAN Data KBLI Tahun :2017 NoKode KBLIJudul KBLI Uraian KBLI 152221 AKTIVITAS PELAYANAN KEPELABUHANAN LAUTKelompok ini mencakup kegiatan usaha pelayanan kepelabuhan laut, yang berhubungan dengan angkutan perairan untuk penumpang, hewan atau barang, seperti pengoperasian fasilitas terminal misalnya pelabuhan dan dermaga, operasi penguncian jalur air dan lain-lain, navigasi, pelayaran dan kegiatan berlabuh, jasa penambatan dan jasa pemanduanMAKSUD DAN TUJUAN Klasifikasi SahamHarga Per LembarJumlah Lembar SahamTotal - Rp. 1000 40.000.000 Rp. 40.000.000.000MODAL DASAR Klasifikasi SahamHarga Per LembarJumlah Lembar SahamTotal - Rp. 1000 10.000.000 Rp. 10.000.000.000MODAL DITEMPATKANRESMI DARI DITJEN AHU Rp 10.000.000.000 Dalam bentuk uang.MODAL DISETOR Nama Jabatan AlamatKlasifikasi SahamJumlah Lembar SahamTotal ALIF SASETYO, NIK: 3171060201830005 NPWP: 246383541071000 TTL: Jakarta, 02 Januari 1983DIREKTUR Jalan Maluku Nomor 19- - - ARIEF HERMAWAN, NIK: 1271121011700003 NPWP: 070970173112000 TTL: Bogor, 10 November 1970KOMISARIS BNR Cluster Cendana C 5/19- - - ARLAN SEPTIA ANANDA RASAM, NIK: 3174051209620003 NPWP: 080878200013000 TTL: Jakarta, 12 September 1962KOMISARIS Jalan Bendi IX/125- - - CHAIRAL TANJUNG, NIK: 3171011605660004 NPWP: 070141650093000 TTL: Jakarta, 16 Mei 1966WAKIL KOMISARIS UTAMAJalan Besuki Nomor 9- - - FUAD RIZAL, NIK: 3174010201780008 NPWP: 488337379015000 TTL: Jakarta, 02 Januari 1978DIREKTUR UTAMATebet Barat Dalam- - - Ir. R AGUS HARYOTO PURNOMO, NIK: 3578032408610001 NPWP: 097468813615000 TTL: SLEMAN, 24 Agustus 1961KOMISARIS UTAMARUNGKUT ASRI TIMUR 14/35- - - PT CTCORP INFRASTRUKTUR INDONESIA, Nomor SK :-- Menara Bank Mega, Lantai 24, Jalan Kapten Pierre Tendean Kavling 12-14A- 3.200.000 Rp.3.200.000.000 PT INTERPORT PATIMBAN AGUNG, Nomor SK :-- Graha Mitra Lantai 7, Jalan Jenderal Gatot Subroto Kavling 21- 2.900.000 Rp.2.900.000.000 PT PATIMBAN MAJU BERSAMA, Nomor SK :AHU- 0061318.AH.01.01.TAHUN 2021 Tanggal SK :30 September 2021- Menara MTH Lantai 11, jalan MT Haryono, kavling 23- 2.900.000 Rp. 2.900.000.000 PT TERMINAL PETIKEMAS SURABAYA, Nomor SK :-- Jalan Tanjung Mutiara Nomor 1- 1.000.000 Rp. 1.000.000.000PENGURUS DAN PEMEGANG SAHAM RESMI DARI DITJEN AHU Nama Jabatan AlamatKlasifikasi SahamJumlah Lembar SahamTotal YUKKI NUGRAHAWAN HANAFI, NIK: 3174060211670004 NPWP: 093240992016000 TTL: Jakarta, 02 November 1967KOMISARIS Jalan Cibulan II nomor 15- - - RESMI DARI DITJEN AHU
I intend to use PyPDF2 to extract, and is using the re library from python to extract the match text as intended. Below is the code that I tried implementing.
import PyPDF2
import re
import pprint
import camelot
pdf_file = 'PDF/File.pdf'
with open(pdf_file, 'rb') as pdf_file:
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
page_nums = pdf_reader.numPages
for page_num in range(page_nums):
page = pdf_reader.getPage(page_num)
text = page.extractText()
string = text
found = re.search('[A-Z]+[A-Z]+$', string)
if found:
print(found.group())
else:
print('Not found')
import PyPDF2
import re
class Company: # Filters and extract only company profile within the PDF file
pdf_file = 'PDF/File.pdf'
with open(pdf_file, 'rb') as pdf_file:
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
page_nums = pdf_reader.numPages
for page_num in range(page_nums):
page = pdf_reader.getPage(page_num)
text = page.extractText()
found = re.findall(r'((?:[A-Z][a-z]+s*)+)bs*:s*(.*?)s*(?=(?:[A-Z][a-z]+s*)+:|$)', text)
if found:
print(found)
else:
print('Not found')
Allows us to filter out the specific information indicated on the question column.