DocQA_Agent / app.py
OmidSakaki's picture
Update app.py
8f46e75 verified
raw
history blame
2.08 kB
import gradio as gr
import easyocr
from transformers import pipeline
from PIL import Image
import numpy as np
# Initialize EasyOCR for Persian
reader = easyocr.Reader(['fa'])
# Initialize text processing pipeline
try:
# استفاده از مدل محلی یا مدل‌های عمومی
text_processor = pipeline("text-generation", model="gpt2") # مدل جایگزین
except Exception as e:
text_processor = None
def run_ocr(image):
"""استخراج متن از تصویر با EasyOCR"""
try:
if isinstance(image, Image.Image):
image = np.array(image)
results = reader.readtext(image)
return " ".join([result[1] for result in results]) if results else "متنی یافت نشد!"
except Exception as e:
return f"خطا در OCR: {str(e)}"
def process_text(text):
"""پردازش ساده متن"""
if text == "متنی یافت نشد!":
return text
# اگر پردازشگر متن وجود داشت از آن استفاده کن
if text_processor:
try:
return text_processor(text, max_length=50)[0]['generated_text']
except:
return text # اگر خطا رخ داد متن اصلی را برگردان
return text # اگر پردازشگر متن وجود نداشت
with gr.Blocks(title="سیستم OCR فارسی") as app:
gr.Markdown("## استخراج متن فارسی از تصاویر")
with gr.Row():
with gr.Column():
img_input = gr.Image(label="تصویر ورودی", type="pil")
btn = gr.Button("پردازش تصویر", variant="primary")
with gr.Column():
ocr_output = gr.Textbox(label="متن استخراج شده")
processed_output = gr.Textbox(label="متن پردازش شده", visible=False) # غیرفعال شده
btn.click(
fn=lambda x: (run_ocr(x), process_text(run_ocr(x))),
inputs=img_input,
outputs=[ocr_output, processed_output]
)
if __name__ == "__main__":
app.launch()