Update app.py
Browse files
app.py
CHANGED
|
@@ -243,7 +243,51 @@ def run_process(file, question, model_choice, temperature, top_p, external_api_u
|
|
| 243 |
|
| 244 |
except Exception as e:
|
| 245 |
return f"ERROR: {type(e).__name__}: {e}", None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 246 |
|
|
|
|
| 247 |
# ================== UI ==================
|
| 248 |
def main():
|
| 249 |
with gr.Blocks(title="OCR Multi-Agent System") as demo:
|
|
|
|
| 243 |
|
| 244 |
except Exception as e:
|
| 245 |
return f"ERROR: {type(e).__name__}: {e}", None
|
| 246 |
+
def run_process_internal_base_v2(file_bytes, filename, mime, question, model_choice, temperature, top_p, batch_size=3):
|
| 247 |
+
api_key = os.environ.get("GOOGLE_API_KEY", DEFAULT_API_KEY)
|
| 248 |
+
if not api_key:
|
| 249 |
+
return "ERROR: Missing GOOGLE_API_KEY.", None
|
| 250 |
+
genai.configure(api_key=api_key)
|
| 251 |
+
model_name = INTERNAL_MODEL_MAP.get(model_choice, "gemini-2.5-flash")
|
| 252 |
+
model = genai.GenerativeModel(model_name=model_name,
|
| 253 |
+
generation_config={"temperature": float(temperature), "top_p": float(top_p)})
|
| 254 |
+
|
| 255 |
+
if file_bytes[:4] == b"%PDF":
|
| 256 |
+
pages = pdf_to_images(file_bytes)
|
| 257 |
+
else:
|
| 258 |
+
pages = [Image.open(io.BytesIO(file_bytes))]
|
| 259 |
+
|
| 260 |
+
user_prompt = (question or "").strip() or PROMPT_FREIGHT_JSON
|
| 261 |
+
all_json_results, all_text_results = [], []
|
| 262 |
+
previous_header_json = None
|
| 263 |
+
|
| 264 |
+
def _safe_text(resp):
|
| 265 |
+
try:
|
| 266 |
+
return resp.text
|
| 267 |
+
except:
|
| 268 |
+
return ""
|
| 269 |
+
|
| 270 |
+
for i in range(0, len(pages), batch_size):
|
| 271 |
+
batch = pages[i:i+batch_size]
|
| 272 |
+
uploaded = []
|
| 273 |
+
for im in batch:
|
| 274 |
+
with tempfile.NamedTemporaryFile(delete=False, suffix=".png") as tmp:
|
| 275 |
+
im.save(tmp.name)
|
| 276 |
+
up = genai.upload_file(path=tmp.name, mime_type="image/png")
|
| 277 |
+
up = genai.get_file(up.name)
|
| 278 |
+
uploaded.append(up)
|
| 279 |
+
|
| 280 |
+
context_prompt = user_prompt
|
| 281 |
+
resp = model.generate_content([context_prompt] + uploaded)
|
| 282 |
+
text = _safe_text(resp)
|
| 283 |
+
all_text_results.append(text)
|
| 284 |
+
for up in uploaded:
|
| 285 |
+
try:
|
| 286 |
+
genai.delete_file(up.name)
|
| 287 |
+
except:
|
| 288 |
+
pass
|
| 289 |
|
| 290 |
+
return "\n\n".join(all_text_results), None
|
| 291 |
# ================== UI ==================
|
| 292 |
def main():
|
| 293 |
with gr.Blocks(title="OCR Multi-Agent System") as demo:
|