Spaces:
Sleeping
Sleeping
ADDED TANGGAL BIOMETRIK
Browse files
app.py
CHANGED
|
@@ -49,7 +49,7 @@ def process_pdfs(pdf_files, dpi):
|
|
| 49 |
|
| 50 |
|
| 51 |
# Function to analyze the extracted image using Google GenAI
|
| 52 |
-
def gemini_analysis(images, tanggal_berangkat, tanggal_pulang):
|
| 53 |
client = genai.Client(api_key='AIzaSyBpviFHkaEF-GAjMMl28dIS1poikhBqq_w')
|
| 54 |
# Define your prompt
|
| 55 |
prompt = '''Anda bertugas memvalidasi kelengkapan, kesesuaian dan konsistensi data dari dokumen individual berdasarkan syarat Visa di bawah. Cukup fokus pada syarat yang diberikan tanpa mengambil referensi lain.
|
|
@@ -66,11 +66,11 @@ def gemini_analysis(images, tanggal_berangkat, tanggal_pulang):
|
|
| 66 |
8. Akta Kelahiran / Surat Kelahiran / Bukti Kelahiran / Ijazah: Wajib jika ada anak-anak atau disponsori orang lain.
|
| 67 |
9. Surat Sponsor (Guarantee Letter): Wajib ada. Bisa dari universitas, dinas/perusahaan, orang tua, atau orang lain (misal. suami). Wajib berbahasa Inggris, tertera Tujuan negara, tanggal trip, Siapa penanggung biaya, Wajib ada tulisan yang menjaminan kembali ke Indonesia.
|
| 68 |
10. Status Pekerjaan (WAJIB ADA salah satu): Pegawai (Surat kerja + Slip gaji 3 bulan), Pemilik usaha (NIB/SIUP + Surat jaminan staf), Pelajar (Surat sekolah/universitas + kartu pelajar), Freelancer/Onlineshop (Kontrak kerja & 5 bukti transaksi), Pensiun (Surat pensiun + guarantee keluarga).
|
| 69 |
-
11. Rekening Koran 3 bulan: WAJIB ADA, Atas nama pribadi
|
| 70 |
12. Rekening Koran Sponsor 3 bulan: WAJIB ADA jika disponsori, Atas & sponsor, tertera Cap & logo bank, nama, nomor rekening, Saldo stabil min. Rp 35 juta/orang.
|
| 71 |
13. Slip Gaji: Wajib ada jika pekerja, 3 bulan terakhir sebelum tanggal berankgat, Jika suami lengkap, istri cukup lampirkan rekening koran suami.
|
| 72 |
-
14. Surat Referensi Bank: Wajib ada.
|
| 73 |
-
15. Surat Referensi Bank Sponsor: Wajib ada jika disponsori.
|
| 74 |
---
|
| 75 |
TEMPLATE OUTPUT JAWABAN DALAM FORMAT JSON:
|
| 76 |
{
|
|
@@ -134,7 +134,7 @@ def gemini_analysis(images, tanggal_berangkat, tanggal_pulang):
|
|
| 134 |
'''
|
| 135 |
|
| 136 |
# Perform document analysis
|
| 137 |
-
prompt_with_date = f'Tanggal Berangkat={tanggal_berangkat}. Tanggal pulang={tanggal_pulang}\n\n{prompt}'
|
| 138 |
response = client.models.generate_content(
|
| 139 |
model="gemini-2.0-flash-lite",
|
| 140 |
contents=[prompt_with_date] + images,
|
|
@@ -225,7 +225,7 @@ Output:
|
|
| 225 |
zipf.write(pdf_path, arcname=f"{doc_name}.pdf")
|
| 226 |
return zip_path
|
| 227 |
|
| 228 |
-
def main_process(files, tanggal_berangkat, tanggal_pulang, dpi):
|
| 229 |
all_images = []
|
| 230 |
image_paths_for_zip = []
|
| 231 |
|
|
@@ -251,7 +251,7 @@ def main_process(files, tanggal_berangkat, tanggal_pulang, dpi):
|
|
| 251 |
raise ValueError(f"File {file_path} is not a valid image, PDF, or ZIP.")
|
| 252 |
|
| 253 |
# Generate summary from images
|
| 254 |
-
raw_output, analysis_str, summary, invalid_list_str, notice_msg, form_filling_str, token_usage = gemini_analysis(all_images, tanggal_berangkat, tanggal_pulang)
|
| 255 |
rdf = random.randint(5, 10)
|
| 256 |
time.sleep(rdf)
|
| 257 |
|
|
@@ -300,11 +300,11 @@ with gr.Blocks() as demo:
|
|
| 300 |
placeholder="Masukan Tanggal Kepulangan",
|
| 301 |
type="text"
|
| 302 |
)
|
| 303 |
-
|
| 304 |
-
|
| 305 |
-
|
| 306 |
-
|
| 307 |
-
|
| 308 |
dpi_slider = gr.Slider(
|
| 309 |
minimum=100,
|
| 310 |
maximum=400,
|
|
@@ -335,7 +335,7 @@ with gr.Blocks() as demo:
|
|
| 335 |
|
| 336 |
run_btn.click(
|
| 337 |
fn=main_process,
|
| 338 |
-
inputs=[file_input, tanggal_berangkat, tanggal_pulang, dpi_slider],
|
| 339 |
outputs=[download_output_docx, form_filling_output, download_valid_zip, invalid_list_output, raw_output, summary_output, notice_msg, token_usage]
|
| 340 |
)
|
| 341 |
|
|
|
|
| 49 |
|
| 50 |
|
| 51 |
# Function to analyze the extracted image using Google GenAI
|
| 52 |
+
def gemini_analysis(images, tanggal_berangkat, tanggal_pulang, tanggal_biometrik):
|
| 53 |
client = genai.Client(api_key='AIzaSyBpviFHkaEF-GAjMMl28dIS1poikhBqq_w')
|
| 54 |
# Define your prompt
|
| 55 |
prompt = '''Anda bertugas memvalidasi kelengkapan, kesesuaian dan konsistensi data dari dokumen individual berdasarkan syarat Visa di bawah. Cukup fokus pada syarat yang diberikan tanpa mengambil referensi lain.
|
|
|
|
| 66 |
8. Akta Kelahiran / Surat Kelahiran / Bukti Kelahiran / Ijazah: Wajib jika ada anak-anak atau disponsori orang lain.
|
| 67 |
9. Surat Sponsor (Guarantee Letter): Wajib ada. Bisa dari universitas, dinas/perusahaan, orang tua, atau orang lain (misal. suami). Wajib berbahasa Inggris, tertera Tujuan negara, tanggal trip, Siapa penanggung biaya, Wajib ada tulisan yang menjaminan kembali ke Indonesia.
|
| 68 |
10. Status Pekerjaan (WAJIB ADA salah satu): Pegawai (Surat kerja + Slip gaji 3 bulan), Pemilik usaha (NIB/SIUP + Surat jaminan staf), Pelajar (Surat sekolah/universitas + kartu pelajar), Freelancer/Onlineshop (Kontrak kerja & 5 bukti transaksi), Pensiun (Surat pensiun + guarantee keluarga).
|
| 69 |
+
11. Rekening Koran 3 bulan: WAJIB ADA, Atas nama pribadi, tertera Cap & logo bank, nama, nomor rekening, Saldo stabil min. Rp 35 juta/orang hingga 1 minggu sebelum tanggal biometrik.
|
| 70 |
12. Rekening Koran Sponsor 3 bulan: WAJIB ADA jika disponsori, Atas & sponsor, tertera Cap & logo bank, nama, nomor rekening, Saldo stabil min. Rp 35 juta/orang.
|
| 71 |
13. Slip Gaji: Wajib ada jika pekerja, 3 bulan terakhir sebelum tanggal berankgat, Jika suami lengkap, istri cukup lampirkan rekening koran suami.
|
| 72 |
+
14. Surat Referensi Bank: Wajib ada. Surat yang menyatakan bahwa peserta tersebut adalah nasabah bank terkait. Berbeda dengan rekening koran.
|
| 73 |
+
15. Surat Referensi Bank Sponsor: Wajib ada jika disponsori. Berupa surat yang menyatakan bahwa pemberi sponsor tersebut adalah nasabah bank terkait. Berbeda dengan rekening koran.
|
| 74 |
---
|
| 75 |
TEMPLATE OUTPUT JAWABAN DALAM FORMAT JSON:
|
| 76 |
{
|
|
|
|
| 134 |
'''
|
| 135 |
|
| 136 |
# Perform document analysis
|
| 137 |
+
prompt_with_date = f'Tanggal Berangkat={tanggal_berangkat}. Tanggal pulang={tanggal_pulang}. Tanggal Biometrik={tanggal_biometrik}\n\n{prompt}'
|
| 138 |
response = client.models.generate_content(
|
| 139 |
model="gemini-2.0-flash-lite",
|
| 140 |
contents=[prompt_with_date] + images,
|
|
|
|
| 225 |
zipf.write(pdf_path, arcname=f"{doc_name}.pdf")
|
| 226 |
return zip_path
|
| 227 |
|
| 228 |
+
def main_process(files, tanggal_berangkat, tanggal_pulang, tanggal_biometrik, dpi):
|
| 229 |
all_images = []
|
| 230 |
image_paths_for_zip = []
|
| 231 |
|
|
|
|
| 251 |
raise ValueError(f"File {file_path} is not a valid image, PDF, or ZIP.")
|
| 252 |
|
| 253 |
# Generate summary from images
|
| 254 |
+
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)
|
| 255 |
rdf = random.randint(5, 10)
|
| 256 |
time.sleep(rdf)
|
| 257 |
|
|
|
|
| 300 |
placeholder="Masukan Tanggal Kepulangan",
|
| 301 |
type="text"
|
| 302 |
)
|
| 303 |
+
tanggal_biometrik = gr.Textbox(
|
| 304 |
+
label="Tanggal Biometrik",
|
| 305 |
+
placeholder="Masukan Tanggal Biometrik",
|
| 306 |
+
type="text"
|
| 307 |
+
)
|
| 308 |
dpi_slider = gr.Slider(
|
| 309 |
minimum=100,
|
| 310 |
maximum=400,
|
|
|
|
| 335 |
|
| 336 |
run_btn.click(
|
| 337 |
fn=main_process,
|
| 338 |
+
inputs=[file_input, tanggal_berangkat, tanggal_pulang, tanggal_biometrik, dpi_slider],
|
| 339 |
outputs=[download_output_docx, form_filling_output, download_valid_zip, invalid_list_output, raw_output, summary_output, notice_msg, token_usage]
|
| 340 |
)
|
| 341 |
|