frendyrachman commited on
Commit
3577a12
Β·
verified Β·
1 Parent(s): 6e7765f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -16
app.py CHANGED
@@ -13,6 +13,7 @@ import time
13
  import random
14
  from google.genai.types import GenerateContentConfig
15
  import json
 
16
 
17
 
18
  def extract_zip_and_collect_files(zip_file_path):
@@ -47,6 +48,19 @@ def process_pdfs(pdf_files, dpi):
47
 
48
  return all_images
49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
  # Function to analyze the extracted image using Google GenAI
52
  def gemini_analysis(images, tanggal_berangkat, tanggal_pulang, tanggal_biometrik):
@@ -56,27 +70,26 @@ def gemini_analysis(images, tanggal_berangkat, tanggal_pulang, tanggal_biometrik
56
  Pastikan data seperti nama, tanggal, tujuan dan lainnya konsisten antar dokumen.
57
  ---
58
  DAFTAR SYARAT DOKUMEN YANG WAJIB DIPERIKSA:
59
- 1. **Paspor**: Aktif min. 6 bulan setelah tanggal pulang, ada tanda tangan, lampirkan paspor lama jika ada, lampirkan fotocopy / scan paspor sponsor jika disponsori.
60
- 2. **Paspor Lama**: Opsional. Halaman depan & tanda tangan, semua visa sebelumnya (terutama 5 tahun terakhir).
61
- 3. **Fotokopi Paspor**: Wajib. Halaman depan & tanda tangan, semua visa sebelumnya (terutama 5 tahun terakhir).
62
- 4. **Pas Foto**: Background putih, wajah terlihat 80%, alis terlihat, tidak berbayang.
63
- 5. **Kartu Keluarga**: Wajib. Versi 2019 atau ada barcode, sesuai status, translate jika untuk VFS Germany.
64
- 6. **Bukti Nikah/Cerai**: Wajib jika sudah menikah/bercerai, sertakan halaman biodata suami/istri & surat izin suami jika istri ikut.
65
  7. **KTP**: Wajib. Nama harus sama dengan paspor & dokumen lain. Jika beda nama, wajib ada surat keterangan beda nama.
66
  8. **KTP Sponsor**: Wajib jika disponsori.
67
- 9. **Bukti Kelahiran/Ijazah**: Optional. Wajib jika anak-anak atau disponsori orang lain.
68
  10. **Surat Sponsor**: Berbahasa Inggris, berisi tujuan, tanggal trip, penanggung biaya, jaminan kembali ke Indonesia.
69
- 11. **Status Pekerjaan (pilih salah satu)**:
70
   - Pegawai: Surat kerja + slip gaji 3 bulan
71
   - Pemilik usaha: NIB/SIUP + surat jaminan staf
72
   - Pelajar: Surat sekolah/universitas + kartu pelajar
73
   - Freelancer/Online shop: Kontrak + 5 bukti transaksi
74
   - Pensiun: Surat pensiun + guarantee keluarga
75
- 12. **Rekening Koran Peserta**: Atas nama pribadi, tertera cap & logo bank, nama & nomor rekening, saldo minimal Rp 40 juta/orang, wajib terupdate hingga. 7 hari sebelum tanggal biometrik. Laporkan hingga hasil analisis.
76
- 13. **Rekening Koran Sponsor**: Wajib ada jika disponsori. tertera cap & logo bank, nama & nomor rekening, saldo minimal Rp 40 juta/orang, wajib terupdate hingga. 7 hari sebelum tanggal biometrik. Laporkan hingga hasil analisis.
77
- 14. **Slip Gaji**: Wajib jika pekerja. 3 bulan terakhir. Tidak perlu jika istri disponsori suami.
78
- 15. **Surat Referensi Bank**: Wajib ada. Surat resmi dari bank yang menyatakan peserta adalah nasabah. Berbeda dengan rekening koran dan tidak bisa digantikan dengan rekening koran.
79
- 16. **Surat Referensi Bank Sponsor**: Wajib jika disponsori. Harus berupa surat resmi dari bank, bukan rekening koran saja. Tidak bisa digantikan dengan rekening koran.
80
  ---
81
  TEMPLATE OUTPUT JAWABAN DALAM FORMAT JSON:
82
  {
@@ -125,13 +138,13 @@ def gemini_analysis(images, tanggal_berangkat, tanggal_pulang, tanggal_biometrik
125
  ---
126
  TEMPLATE PESAN PEMBERITAHUAN (notice_msg):
127
  Berikut kami informasikan kekurangan dokumen yang *WAJIB* dibawa saat biometric visa schengen nanti ya :
128
- 1. Pas Foto (Wajib berukuran 3,5 x 4,5 cm dan diserahkan di lokasi biometrik) # ini wajib dicantumkan dan dibawa terlepas valid atau tidak
129
  2. ...
130
  3. ...
131
  4. ...
132
  5. ...
133
  ---
134
- # cantumkan dokumen lain yang masih Invalid dan perlu perbaikan.
135
  ---
136
  TEMPLATE SUMMARY:
137
  List Dokumen yang sudah valid: .... \n
@@ -266,7 +279,8 @@ def main_process(files, tanggal_berangkat, tanggal_pulang, tanggal_biometrik, dp
266
  raise ValueError(f"File {file_path} is not a valid image, PDF, or ZIP.")
267
 
268
  # Generate summary from images
269
- raw_output, analysis_str, summary, invalid_list_str, notice_msg, form_filling_str, token_usage = gemini_analysis(all_images, tanggal_berangkat, tanggal_pulang, tanggal_biometrik)
 
270
  rdf = random.randint(5, 10)
271
  time.sleep(rdf)
272
 
 
13
  import random
14
  from google.genai.types import GenerateContentConfig
15
  import json
16
+ from PIL import ImageEnhance, ImageFilter
17
 
18
 
19
  def extract_zip_and_collect_files(zip_file_path):
 
48
 
49
  return all_images
50
 
51
+ def preprocess_image(img):
52
+ # Enhance contrast and sharpness
53
+ img = ImageEnhance.Contrast(img).enhance(1.5)
54
+ img = ImageEnhance.Sharpness(img).enhance(2.0)
55
+
56
+ # Convert to grayscale for better OCR performance
57
+ img = img.convert('L')
58
+
59
+ # Resize for optimal resolution (maintain aspect ratio)
60
+ max_size = (1600, 1600)
61
+ img.thumbnail(max_size, Image.LANCZOS)
62
+
63
+ return img
64
 
65
  # Function to analyze the extracted image using Google GenAI
66
  def gemini_analysis(images, tanggal_berangkat, tanggal_pulang, tanggal_biometrik):
 
70
  Pastikan data seperti nama, tanggal, tujuan dan lainnya konsisten antar dokumen.
71
  ---
72
  DAFTAR SYARAT DOKUMEN YANG WAJIB DIPERIKSA:
73
+ 1. **Paspor**. Wajib. Aktif min. 6 bulan setelah tanggal pulang, ada tanda tangan, lampirkan paspor lama jika ada, lampirkan fotocopy / scan paspor sponsor jika disponsori.
74
+ 2. **Paspor Lama**. Opsional. Halaman depan & tanda tangan, semua visa sebelumnya (terutama 5 tahun terakhir).
75
+ 3. **Fotokopi Paspor**. Wajib. Halaman depan & tanda tangan, semua visa sebelumnya (terutama 5 tahun terakhir).
76
+ 4. **Pas Foto**. Background putih, wajah terlihat 80%, alis terlihat, tidak berbayang.
77
+ 5. **Kartu Keluarga**. Wajib. Versi 2019 atau ada barcode, sesuai status, translate jika untuk VFS Germany.
78
+ 6. **Bukti Nikah/Cerai**. Wajib jika sudah menikah/bercerai, sertakan halaman biodata suami/istri & surat izin suami jika istri ikut.
79
  7. **KTP**: Wajib. Nama harus sama dengan paspor & dokumen lain. Jika beda nama, wajib ada surat keterangan beda nama.
80
  8. **KTP Sponsor**: Wajib jika disponsori.
81
+ 9. **Bukti Kelahiran/Ijazah**: Optional. Wajib untuk anak-anak atau disponsori orang lain.
82
  10. **Surat Sponsor**: Berbahasa Inggris, berisi tujuan, tanggal trip, penanggung biaya, jaminan kembali ke Indonesia.
83
+ 11. **Status Pekerjaan (hanya salah satu)**:
84
   - Pegawai: Surat kerja + slip gaji 3 bulan
85
   - Pemilik usaha: NIB/SIUP + surat jaminan staf
86
   - Pelajar: Surat sekolah/universitas + kartu pelajar
87
   - Freelancer/Online shop: Kontrak + 5 bukti transaksi
88
   - Pensiun: Surat pensiun + guarantee keluarga
89
+ 12. **Rekening Koran Peserta**. Wajib. Atas nama pribadi, tertera cap & logo bank, nama & nomor rekening, saldo minimal Rp 40 juta/orang, wajib terupdate hingga. 7 hari sebelum tanggal biometrik. Laporkan hingga hasil analisis.
90
+ 13. **Rekening Koran Sponsor**. Optional. Wajib ada jika disponsori. tertera cap & logo bank, nama & nomor rekening, saldo minimal Rp 40 juta/orang, wajib terupdate hingga. 7 hari sebelum tanggal biometrik. Laporkan hingga hasil analisis.
91
+ 14. **Surat Referensi Bank**: Wajib ada. Surat resmi dari bank yang menyatakan peserta adalah nasabah. Berbeda dengan rekening koran dan tidak bisa digantikan dengan rekening koran.
92
+ 15. **Surat Referensi Bank Sponsor**: Wajib jika disponsori. Harus berupa surat resmi dari bank, bukan rekening koran saja. Tidak bisa digantikan dengan rekening koran.
 
93
  ---
94
  TEMPLATE OUTPUT JAWABAN DALAM FORMAT JSON:
95
  {
 
138
  ---
139
  TEMPLATE PESAN PEMBERITAHUAN (notice_msg):
140
  Berikut kami informasikan kekurangan dokumen yang *WAJIB* dibawa saat biometric visa schengen nanti ya :
141
+ 1. Pas Foto (Wajib berukuran 3,5 x 4,5 cm dan diserahkan di lokasi biometrik) ## ini wajib dicantumkan dan dibawa
142
  2. ...
143
  3. ...
144
  4. ...
145
  5. ...
146
  ---
147
+ # cantumkan dokumen lain yang masih Invalid beserta alasan invalidnya.
148
  ---
149
  TEMPLATE SUMMARY:
150
  List Dokumen yang sudah valid: .... \n
 
279
  raise ValueError(f"File {file_path} is not a valid image, PDF, or ZIP.")
280
 
281
  # Generate summary from images
282
+ preprocessed_images = [preprocess_image(img) for img in all_images]
283
+ raw_output, analysis_str, summary, invalid_list_str, notice_msg, form_filling_str, token_usage = gemini_analysis(preprocessed_images, tanggal_berangkat, tanggal_pulang, tanggal_biometrik)
284
  rdf = random.randint(5, 10)
285
  time.sleep(rdf)
286