Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -578,25 +578,22 @@ def find_best_subtitle_region(frame, ocr_model, region_height_ratio=0.35, num_st
|
|
| 578 |
# Fallback to center-bottom strip
|
| 579 |
fallback_y = height - int(height * 0.2)
|
| 580 |
return frame[fallback_y:, :], (fallback_y, height)
|
| 581 |
-
|
| 582 |
-
def ocr_frame_worker(args):
|
| 583 |
frame_idx, frame_time, frame = args
|
| 584 |
|
| 585 |
-
init_ocr_model() #
|
| 586 |
-
|
| 587 |
-
if frame is None or frame.size == 0:
|
| 588 |
-
return {"time": frame_time, "text": ""}
|
| 589 |
|
| 590 |
-
if not isinstance(frame, np.ndarray):
|
| 591 |
return {"time": frame_time, "text": ""}
|
| 592 |
|
| 593 |
if frame.dtype != np.uint8:
|
| 594 |
frame = frame.astype(np.uint8)
|
| 595 |
|
| 596 |
try:
|
| 597 |
-
|
| 598 |
-
|
| 599 |
-
texts = [line[1][0] for line in
|
| 600 |
combined_text = " ".join(texts).strip()
|
| 601 |
return {"time": frame_time, "text": combined_text}
|
| 602 |
except Exception as e:
|
|
|
|
| 578 |
# Fallback to center-bottom strip
|
| 579 |
fallback_y = height - int(height * 0.2)
|
| 580 |
return frame[fallback_y:, :], (fallback_y, height)
|
| 581 |
+
|
| 582 |
+
def ocr_frame_worker(args, min_confidence=0.7):
|
| 583 |
frame_idx, frame_time, frame = args
|
| 584 |
|
| 585 |
+
init_ocr_model() # Load model in thread-safe way
|
|
|
|
|
|
|
|
|
|
| 586 |
|
| 587 |
+
if frame is None or frame.size == 0 or not isinstance(frame, np.ndarray):
|
| 588 |
return {"time": frame_time, "text": ""}
|
| 589 |
|
| 590 |
if frame.dtype != np.uint8:
|
| 591 |
frame = frame.astype(np.uint8)
|
| 592 |
|
| 593 |
try:
|
| 594 |
+
result = ocr_model.ocr(frame, cls=True)
|
| 595 |
+
lines = result[0] if result else []
|
| 596 |
+
texts = [line[1][0] for line in lines if line[1][1] >= min_confidence]
|
| 597 |
combined_text = " ".join(texts).strip()
|
| 598 |
return {"time": frame_time, "text": combined_text}
|
| 599 |
except Exception as e:
|