frendyrachman commited on
Commit
ab4cd3f
Β·
verified Β·
1 Parent(s): 4596171

Update departure and arrival date input.

Browse files
Files changed (1) hide show
  1. app.py +22 -33
app.py CHANGED
@@ -7,6 +7,7 @@ from google import genai
7
  import zipfile
8
  import tempfile
9
  os.system("apt-get install poppler-utils")
 
10
  # Function to process a list of PDF files and convert them to images
11
  def process_pdfs(pdf_files):
12
  """
@@ -23,8 +24,9 @@ def process_pdfs(pdf_files):
23
 
24
  return all_images
25
 
 
26
  # Function to analyze the extracted image using Google GenAI
27
- def gemini_analysis(images):
28
  """
29
  Analyze the extracted image using Google GenAI.
30
  """
@@ -33,76 +35,55 @@ def gemini_analysis(images):
33
  client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
34
  # Define your prompt
35
  prompt = f'''Anda bertugas memvalidasi kesesuaian dan konsistensi dokumen individual berdasarkan syarat Visa di bawah. Cukup fokus pada syarat yang diberikan tanpa mengambil referensi lain.
36
- Gunakan tanggal hari ini ({today}) sebagai tanggal pemeriksaan visa (bukan pengajuan).
37
  ---
38
-
39
  DAFTAR SYARAT DOKUMEN YANG WAJIB DIPERIKSA:
40
-
41
  1. Paspor
42
-
43
  Asli, aktif min. 6 bulan setelah tanggal kepulangan
44
  Ada tanda tangan pemilik
45
  Lampirkan paspor lama jika ada visa perjalanan sebelumnya
46
  Copy paspor sponsor jika disponsori
47
-
48
  2. Fotokopi Paspor
49
-
50
  Halaman depan & tanda tangan
51
  Semua visa perjalanan sebelumnya jika ada (terutama 5 tahun terakhir)
52
-
53
  3. Pas Foto
54
-
55
  Ukuran kurang lebih 3.5 x 4.5 cm, background putih
56
  Wajah terlihat 80%, alis tidak tertutup, tidak pakai softlens, tidak berbayang
57
-
58
  4. Kartu Keluarga (KK)
59
-
60
  Minimal versi 2019 atau berbarcode
61
  Harus sesuai status (nikah/cerai/anak-anak β†’ lampirkan dokumen pendukung)
62
  Harus ditranslate untuk VFS Germany
63
-
64
  5. Akte Nikah/Bukti nikah
65
-
66
  Halaman biodata suami dan istri saja
67
  Jika istri ikut β†’ wajib surat izin suami
68
-
69
  6. KTP
70
-
71
- Nama harus sama dengan paspor
72
- Jika beda β†’ lampirkan surat beda nama
73
-
74
  7. Akta Kelahiran / Surat Kelahiran / Ijazah
75
-
76
  Wajib jika anak-anak atau peserta disponsori oranglain
77
-
78
  8. Surat Sponsor (Guarantee Letter)
79
-
80
  Dalam Bahasa Inggris
81
  Tujuan negara, tanggal trip
82
  Siapa yang menanggung biaya
83
-
84
  9. Status Pekerjaan
85
-
86
  Pegawai: Surat kerja + Slip gaji 3 bulan
87
  Pemilik usaha: NIB/SIUP + Surat jaminan staf
88
  Pelajar: Surat sekolah/universitas + kartu pelajar
89
  Freelancer/onlineshop: Kontrak kerja & 5 bukti transaksi
90
  Pensiun: Surat pensiun + guarantee dari keluarga
91
-
92
  10. Rekening Koran (3 bulan)
93
-
94
  Atas nama pribadi & sponsor
95
  Cap & logo bank, nama, nomor rekening
96
  Saldo stabil min. Rp 35 juta/orang
97
-
98
  11. Slip Gaji
99
-
100
  3 bulan terakhir
101
  Jika suami lengkap β†’ istri cukup lampirkan rekening koran suami
 
 
102
  ---
103
-
104
  FORMAT JAWABAN UNTUK SETIAP DOKUMEN YANG DIUPLOAD:
105
-
106
  - Jenis Dokumen : (jenis dokumen)
107
  - Status : (Valid / Perlu cek ulang / Tidak diperlukan / Tidak ada)
108
  - Catatan : (Catatan singkat atau kekurangan isi dokumen)
@@ -134,7 +115,7 @@ def extract_zip_and_collect_files(zip_file_path):
134
  return collected_files
135
 
136
 
137
- def main_process(files):
138
  all_images = []
139
 
140
  for file in files:
@@ -159,7 +140,7 @@ def main_process(files):
159
  else:
160
  raise ValueError(f"File {file_path} is not a valid image, PDF, or ZIP.")
161
 
162
- summary = gemini_analysis(all_images)
163
  return summary
164
 
165
 
@@ -172,8 +153,16 @@ with gr.Blocks() as demo:
172
  file_types=[".pdf", ".jpg", ".jpeg", ".png", ".zip"],
173
  file_count="multiple"
174
  )
 
 
 
 
 
 
 
 
175
  output = gr.Textbox(label="πŸ“ Summary Result", lines=20)
176
  run_btn = gr.Button("πŸ” Run Analysis")
177
- run_btn.click(fn=main_process, inputs=[file_input], outputs=output)
178
 
179
- demo.launch()
 
7
  import zipfile
8
  import tempfile
9
  os.system("apt-get install poppler-utils")
10
+
11
  # Function to process a list of PDF files and convert them to images
12
  def process_pdfs(pdf_files):
13
  """
 
24
 
25
  return all_images
26
 
27
+
28
  # Function to analyze the extracted image using Google GenAI
29
+ def gemini_analysis(images, tanggal_berangkat, tanggal_pulang):
30
  """
31
  Analyze the extracted image using Google GenAI.
32
  """
 
35
  client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
36
  # Define your prompt
37
  prompt = f'''Anda bertugas memvalidasi kesesuaian dan konsistensi dokumen individual berdasarkan syarat Visa di bawah. Cukup fokus pada syarat yang diberikan tanpa mengambil referensi lain.
38
+ Gunakan tanggal hari ini ({today}) sebagai tanggal pemeriksaan visa (bukan pengajuan). Gunakan {tanggal_berangkat} sebagai tanggal berangkat, dan {tanggal_pulang} sebagai tanggal kepulangan.
39
  ---
 
40
  DAFTAR SYARAT DOKUMEN YANG WAJIB DIPERIKSA:
 
41
  1. Paspor
 
42
  Asli, aktif min. 6 bulan setelah tanggal kepulangan
43
  Ada tanda tangan pemilik
44
  Lampirkan paspor lama jika ada visa perjalanan sebelumnya
45
  Copy paspor sponsor jika disponsori
 
46
  2. Fotokopi Paspor
 
47
  Halaman depan & tanda tangan
48
  Semua visa perjalanan sebelumnya jika ada (terutama 5 tahun terakhir)
49
+ Jika tidak dilampirkan, cukup beritahu bahwa Fotokopi Paspor belum ada.
50
  3. Pas Foto
 
51
  Ukuran kurang lebih 3.5 x 4.5 cm, background putih
52
  Wajah terlihat 80%, alis tidak tertutup, tidak pakai softlens, tidak berbayang
 
53
  4. Kartu Keluarga (KK)
 
54
  Minimal versi 2019 atau berbarcode
55
  Harus sesuai status (nikah/cerai/anak-anak β†’ lampirkan dokumen pendukung)
56
  Harus ditranslate untuk VFS Germany
 
57
  5. Akte Nikah/Bukti nikah
 
58
  Halaman biodata suami dan istri saja
59
  Jika istri ikut β†’ wajib surat izin suami
 
60
  6. KTP
61
+ Nama harus sama dengan paspor dan tercantum pada Kartu Keluarga (KK)
62
+ Jika beda maka wajib lampirkan surat beda nama
 
 
63
  7. Akta Kelahiran / Surat Kelahiran / Ijazah
 
64
  Wajib jika anak-anak atau peserta disponsori oranglain
 
65
  8. Surat Sponsor (Guarantee Letter)
 
66
  Dalam Bahasa Inggris
67
  Tujuan negara, tanggal trip
68
  Siapa yang menanggung biaya
69
+ Wajib ada keterangan menjamin akan kembali ke Indonesia
70
  9. Status Pekerjaan
 
71
  Pegawai: Surat kerja + Slip gaji 3 bulan
72
  Pemilik usaha: NIB/SIUP + Surat jaminan staf
73
  Pelajar: Surat sekolah/universitas + kartu pelajar
74
  Freelancer/onlineshop: Kontrak kerja & 5 bukti transaksi
75
  Pensiun: Surat pensiun + guarantee dari keluarga
 
76
  10. Rekening Koran (3 bulan)
 
77
  Atas nama pribadi & sponsor
78
  Cap & logo bank, nama, nomor rekening
79
  Saldo stabil min. Rp 35 juta/orang
 
80
  11. Slip Gaji
 
81
  3 bulan terakhir
82
  Jika suami lengkap β†’ istri cukup lampirkan rekening koran suami
83
+
84
+ Patikan data seperti nama, tanggal, tujuan dan lainnya sama/konsisten antar dokumen.
85
  ---
 
86
  FORMAT JAWABAN UNTUK SETIAP DOKUMEN YANG DIUPLOAD:
 
87
  - Jenis Dokumen : (jenis dokumen)
88
  - Status : (Valid / Perlu cek ulang / Tidak diperlukan / Tidak ada)
89
  - Catatan : (Catatan singkat atau kekurangan isi dokumen)
 
115
  return collected_files
116
 
117
 
118
+ def main_process(files, tanggal_berangkat, tanggal_pulang):
119
  all_images = []
120
 
121
  for file in files:
 
140
  else:
141
  raise ValueError(f"File {file_path} is not a valid image, PDF, or ZIP.")
142
 
143
+ summary = gemini_analysis(all_images, tanggal_berangkat, tanggal_pulang)
144
  return summary
145
 
146
 
 
153
  file_types=[".pdf", ".jpg", ".jpeg", ".png", ".zip"],
154
  file_count="multiple"
155
  )
156
+ tanggal_berangkat = gr.Textbox(
157
+ label="Tanggal Keberangkatan",
158
+ placeholder="Masukan Tanggal Keberangkatan",
159
+ type="date")
160
+ tanggal_pulang = gr.Textbox(
161
+ label="Tanggal Kepulangan",
162
+ placeholder="Masukan Tanggal Kepulangan",
163
+ type="date")
164
  output = gr.Textbox(label="πŸ“ Summary Result", lines=20)
165
  run_btn = gr.Button("πŸ” Run Analysis")
166
+ run_btn.click(fn=main_process, inputs=[file_input, tanggal_berangkat, tanggal_pulang], outputs=output)
167
 
168
+ demo.launch()