| import base64
|
| import json
|
| import re
|
| import requests
|
| import os
|
|
|
|
|
| API_KEY = "your_gemini_api_key_here"
|
|
|
|
|
| image_path = r"C:\Users\ASUS\Downloads\CR_OCR_Cls.v4-original_images.folder\train\CR4\CS000130_CR_jpg.rf.b2528e60546ec399c3088ac69c6a66e2.jpg"
|
|
|
|
|
|
|
| with open(image_path, "rb") as f:
|
| image_b64 = base64.b64encode(f.read()).decode()
|
|
|
| prompt = """
|
| يرجى استخراج الحقول التالية من صورة مستند CR2 (السجل التجاري 2)، جميعها بالعربية فقط:
|
|
|
| - الرقم
|
| - التاريخ
|
| - الرقم الموحد للمنشأة
|
| - الاسم التجاري للمؤسسة
|
| - مركزها الرئيسي
|
| - هاتف
|
| - الرمز البريدي
|
| - اسم التاجر
|
| - الجنسية
|
| - تاريخ الميلاد
|
| - رقم السجل المدني-الإقامة
|
| - تاريخه
|
| - مصدره
|
| - رقم الحفيظة-الجواز
|
| - تاريخه
|
| - مصدرة
|
| - النشاط
|
| - رأس المال
|
| - اسم المدير او الوكيل المفوض
|
| - الجنسية
|
| - تاريخ الميلاد
|
| - رقم السجل المدني-الإقامة
|
| - تاريخه
|
| - مصدره
|
| - سلطات المدير
|
| - يشهد مكتب السجل التجاري بمدينة
|
| - بأنه تم تسجيل المؤسسة المذكورة أعلاه بمدينة
|
| - وتنتهي صلاحية الشهادات في
|
| - بموجب الإيصال رقم
|
| - وتاريخ
|
| - مدير السجل التجاري
|
|
|
| أرجو إعادة النتيجة بصيغة JSON بهذه المفاتيح فقط، وإذا أي حقل غير موجود فضع قيمته null:
|
|
|
| {
|
| "الرقم": null,
|
| "التاريخ": null,
|
| "الرقم الموحد للمنشأة": null,
|
| "الاسم التجاري للمؤسسة": null,
|
| "مركزها الرئيسي": null,
|
| "هاتف": null,
|
| "الرمز البريدي": null,
|
| "اسم التاجر": null,
|
| "الجنسية": null,
|
| "تاريخ الميلاد": null,
|
| "رقم السجل المدني-الإقامة": null,
|
| "تاريخه": null,
|
| "مصدره": null,
|
| "رقم الحفيظة-الجواز": null,
|
| "تاريخه_2": null,
|
| "مصدرة": null,
|
| "النشاط": null,
|
| "رأس المال": null,
|
| "اسم المدير او الوكيل المفوض": null,
|
| "الجنسية_2": null,
|
| "تاريخ الميلاد_2": null,
|
| "رقم السجل المدني-الإقامة_2": null,
|
| "تاريخه_3": null,
|
| "مصدره_2": null,
|
| "سلطات المدير": null,
|
| "يشهد مكتب السجل التجاري بمدينة": null,
|
| "بأنه تم تسجيل المؤسسة المذكورة أعلاه بمدينة": null,
|
| "تنتهي صلاحية الشهادات في": null,
|
| "بموجب الإيصال رقم": null,
|
| "تاريخ_الإيصال": null,
|
| "مدير السجل التجاري": null
|
| }
|
| """
|
|
|
| url = f"https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent?key={API_KEY}"
|
|
|
| headers = {
|
| "Content-Type": "application/json"
|
| }
|
|
|
| data = {
|
| "contents": [
|
| {
|
| "role": "user",
|
| "parts": [
|
| {"text": prompt},
|
| {
|
| "inline_data": {
|
| "mime_type": "image/jpeg",
|
| "data": image_b64
|
| }
|
| }
|
| ]
|
| }
|
| ]
|
| }
|
|
|
| response = requests.post(url, headers=headers, json=data)
|
| response_text = response.json()['candidates'][0]['content']['parts'][0]['text']
|
|
|
|
|
| match = re.search(r"```json\s*(\{.*\})\s*```", response_text, re.DOTALL)
|
| if match:
|
| json_text = match.group(1)
|
| result = json.loads(json_text)
|
|
|
|
|
| folder = os.path.dirname(image_path)
|
| base_name = os.path.splitext(os.path.basename(image_path))[0]
|
| output_file = os.path.join(folder, base_name + ".json")
|
|
|
| with open(output_file, "w", encoding="utf-8") as f:
|
| json.dump(result, f, ensure_ascii=False, indent=2)
|
|
|
| print(f"تم حفظ النتيجة في ملف {output_file}")
|
| print(json.dumps(result, indent=2, ensure_ascii=False))
|
| else:
|
| print("لم أتمكن من استخراج JSON نظيف من الرد:")
|
| print(response_text)
|
|
|