File size: 1,029 Bytes
eec40e6
 
 
805ce1c
e62534d
13dbd9d
 
 
e62534d
beea8e1
13dbd9d
beea8e1
 
13dbd9d
e62534d
beea8e1
805ce1c
eec40e6
13dbd9d
eec40e6
13dbd9d
eec40e6
e62534d
eec40e6
 
13dbd9d
e62534d
805ce1c
eec40e6
 
e62534d
 
beea8e1
eec40e6
805ce1c
eec40e6
e62534d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import gradio as gr
from paddleocr import PaddleOCR
import numpy as np

# ---------------------------------------------------------
# STABILITY CONFIGURATION
# enable_mkldnn=False : STOPS the "primitive" crash
# cpu_threads=1       : STOPS memory overloading
# ---------------------------------------------------------
ocr = PaddleOCR(
    use_angle_cls=False, 
    lang='en', 
    use_gpu=False, 
    enable_mkldnn=False, 
    cpu_threads=1
)

def run_ocr(image):
    if image is None: return "Error: No Image"
    try:
        # Run OCR
        result = ocr.ocr(image, cls=True)
        txts = [line[1][0] for line in result[0]] if result and result[0] else []
        return "\n".join(txts)
    except Exception as e:
        # If it fails, return the error safely
        return f"Error: {str(e)}"

demo = gr.Interface(
    fn=run_ocr,
    inputs=gr.Image(type="numpy"),
    outputs=gr.Textbox(),
    api_name="predict"
)

if __name__ == "__main__":
    demo.queue(max_size=20).launch(server_name="0.0.0.0", server_port=7860)