Spaces:
Runtime error
Runtime error
import os | |
import google.generativeai as genai | |
import gradio as gr | |
from PIL import Image | |
import json | |
# Your API key - for Hugging Face, set this as a secret in the Space settings | |
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") # This will get the API key from environment variables | |
# Configure Gemini API | |
def configure_genai(): | |
genai.configure(api_key=GEMINI_API_KEY) | |
model = genai.GenerativeModel('gemini-1.5-flash-8b') | |
return model | |
def process_form(image): | |
try: | |
model = configure_genai() | |
if not isinstance(image, Image.Image): | |
image = Image.open(image) | |
prompt = """ | |
لطفاً این تصویر فرم را تحلیل کنید و اطلاعات زیر را در قالب JSON استخراج کنید: | |
1. تمام فیلدهای متنی و مقادیر آنها | |
2. چک باکسها یا دکمههای رادیویی و وضعیت آنها | |
3. امضاها یا مهرها در صورت وجود | |
لطفاً پاسخ را به صورت یک شیء JSON با نام فیلدها و مقادیر مناسب فرمت کنید. | |
""" | |
response = model.generate_content([prompt, image]) | |
response_text = response.text | |
json_start = response_text.find('{') | |
json_end = response_text.rfind('}') + 1 | |
if json_start != -1 and json_end != -1: | |
json_str = response_text[json_start:json_end] | |
parsed_json = json.loads(json_str) | |
return json.dumps(parsed_json, indent=2, ensure_ascii=False) | |
else: | |
return response.text | |
except Exception as e: | |
return f"خطا در پردازش فرم: {str(e)}" | |
def create_interface(): | |
css = """ | |
body { | |
background-color: #000000; | |
} | |
.gradio-container { | |
color: white !important; | |
direction: rtl !important; | |
text-align: right !important; | |
} | |
.title-text { | |
color: white !important; | |
text-align: right !important; | |
} | |
.subtitle-text { | |
color: white !important; | |
text-align: right !important; | |
} | |
.description-text { | |
color: white !important; | |
text-align: right !important; | |
} | |
.label-wrap span { | |
color: white !important; | |
text-align: right !important; | |
} | |
.md h1, .md h2, .md h3, .md p, .md ol, .md li { | |
color: white !important; | |
text-align: right !important; | |
direction: rtl !important; | |
} | |
button { | |
direction: rtl !important; | |
background-color: #ff4b1f !important; | |
color: white !important; | |
} | |
.output-markdown { | |
direction: rtl !important; | |
text-align: right !important; | |
} | |
textarea { | |
direction: rtl !important; | |
text-align: right !important; | |
background-color: #2d2d2d !important; | |
color: white !important; | |
} | |
""" | |
with gr.Blocks(title="سیستم استخراج متن از فرم - نسخه نمایشی هایمارت", css=css, theme="darker") as interface: | |
gr.Markdown('<h1 class="title-text">سیستم هوشمند استخراج متن از فرم</h1>') | |
gr.Markdown('<h3 class="subtitle-text">نسخه نمایشی برای هایمارت</h3>') | |
gr.Markdown('<p class="description-text">لطفاً تصویر فرم خود را بارگذاری کنید تا اطلاعات آن به صورت خودکار استخراج شود</p>') | |
with gr.Row(): | |
with gr.Column(): | |
image_input = gr.Image( | |
label="تصویر فرم را اینجا بارگذاری کنید", | |
type="pil" | |
) | |
submit_btn = gr.Button("پردازش فرم") | |
with gr.Column(): | |
output_text = gr.Textbox( | |
label="اطلاعات استخراج شده", | |
lines=10, | |
rtl=True | |
) | |
submit_btn.click( | |
fn=process_form, | |
inputs=[image_input], | |
outputs=output_text | |
) | |
gr.Markdown(""" | |
<div class="guide-section"> | |
<h3>راهنما:</h3> | |
<ol> | |
<li>یک تصویر از فرم خود را بارگذاری کنید</li> | |
<li>روی دکمه 'پردازش فرم' کلیک کنید</li> | |
<li>نتیجه به صورت خودکار نمایش داده خواهد شد</li> | |
</ol> | |
<p><strong>نکته:</strong> برای نتیجه بهتر، لطفاً از تصاویر واضح و با نور کافی استفاده کنید.</p> | |
<p><em>این نسخه نمایشی صرفاً جهت ارزیابی قابلیتهای سیستم میباشد.</em></p> | |
</div> | |
""") | |
return interface | |
interface = create_interface() | |
interface.launch() |