datbkpro commited on
Commit
4f09738
·
verified ·
1 Parent(s): 4beae10

Update ui/tabs.py

Browse files
Files changed (1) hide show
  1. ui/tabs.py +74 -15
ui/tabs.py CHANGED
@@ -333,22 +333,81 @@ def create_streaming_voice_tab(streaming_service: StreamingVoiceService):
333
 
334
  return streaming_tab
335
  def create_image_tab(image_service: ImageService):
336
- gr.Markdown("## Phân tích hình ảnh")
337
- with gr.Row():
338
- image_input = gr.Image(type="numpy", label="Tải lên hình ảnh")
339
- with gr.Row():
340
- image_description = gr.Textbox(
341
- label="Mô tả hình ảnh của bạn (tùy chọn)",
342
- placeholder="Mô tả ngắn về hình ảnh để AI phân tích chính xác hơn..."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  )
344
- with gr.Row():
345
- image_output = gr.Textbox(label="Kết quả phân tích")
346
- analyze_button = gr.Button("Phân tích hình ảnh", variant="primary")
347
- analyze_button.click(
348
- image_service.analyze_image_with_description,
349
- inputs=[image_input, image_description],
350
- outputs=[image_output]
351
- )
352
  def create_chat_tab(chat_service: ChatService):
353
  gr.Markdown("## Trò chuyện với AI Assistant (Đa ngôn ngữ)")
354
 
 
333
 
334
  return streaming_tab
335
  def create_image_tab(image_service: ImageService):
336
+ """Tạo tab phân tích hình ảnh với OCR và LLM"""
337
+
338
+ with gr.Blocks() as image_tab:
339
+ gr.Markdown("## 🖼️ Phân tích hình ảnh & Trích xuất văn bản")
340
+ gr.Markdown("""
341
+ ### 🔍 Chức năng:
342
+ - **OCR đa ngôn ngữ**: Trích xuất văn bản từ ảnh (Tiếng Việt, Anh, Nhật, Hàn, Trung, ...)
343
+ - **Phân tích AI**: Sử dụng LLM để phân tích nội dung và ngữ cảnh
344
+ - **Hỗ trợ nhiều định dạng**: Tài liệu, ảnh chụp, meme, screenshot
345
+
346
+ ### 📝 Hướng dẫn:
347
+ 1. Tải lên hình ảnh có chứa văn bản
348
+ 2. (Tùy chọn) Mô tả hình ảnh để AI phân tích chính xác hơn
349
+ 3. Nhấn "Phân tích hình ảnh" để xem kết quả
350
+ """)
351
+
352
+ with gr.Row():
353
+ with gr.Column(scale=1):
354
+ # Image input
355
+ image_input = gr.Image(
356
+ type="numpy",
357
+ label="🖼️ Tải lên hình ảnh",
358
+ height=300
359
+ )
360
+
361
+ # User description
362
+ image_description = gr.Textbox(
363
+ label="📝 Mô tả hình ảnh (tùy chọn)",
364
+ placeholder="Ví dụ: Đây là hóa đơn mua hàng, ảnh chụp menu nhà hàng, văn bản tiếng Việt...",
365
+ lines=3
366
+ )
367
+
368
+ # Analyze button
369
+ analyze_button = gr.Button(
370
+ "🔍 Phân tích hình ảnh",
371
+ variant="primary",
372
+ size="lg"
373
+ )
374
+
375
+ # Clear button
376
+ clear_button = gr.Button("🗑️ Xóa", variant="secondary")
377
+
378
+ with gr.Column(scale=2):
379
+ # Results output
380
+ image_output = gr.Textbox(
381
+ label="📊 Kết quả phân tích",
382
+ lines=15,
383
+ max_lines=20,
384
+ show_copy_button=True
385
+ )
386
+
387
+ def analyze_image(image, description):
388
+ """Xử lý phân tích ảnh"""
389
+ if image is None:
390
+ return "❌ Vui lòng tải lên hình ảnh trước khi phân tích."
391
+
392
+ return image_service.analyze_image_with_description(image, description)
393
+
394
+ def clear_all():
395
+ """Xóa tất cả input và output"""
396
+ return None, "", ""
397
+
398
+ # Event handlers
399
+ analyze_button.click(
400
+ analyze_image,
401
+ inputs=[image_input, image_description],
402
+ outputs=[image_output]
403
  )
404
+
405
+ clear_button.click(
406
+ clear_all,
407
+ outputs=[image_input, image_description, image_output]
408
+ )
409
+
410
+ return image_tab
 
411
  def create_chat_tab(chat_service: ChatService):
412
  gr.Markdown("## Trò chuyện với AI Assistant (Đa ngôn ngữ)")
413