File size: 2,343 Bytes
fc691a3
 
57b8db4
fc691a3
 
57b8db4
2d36486
fc691a3
57b8db4
2d36486
fc691a3
57b8db4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2d36486
 
57b8db4
 
 
 
 
 
 
 
 
 
 
 
2d36486
57b8db4
 
 
 
 
 
 
 
 
fc691a3
57b8db4
 
2d36486
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import streamlit as st
from paddleocr import PaddleOCR, draw_ocr
from PIL import Image
import numpy as np
from langdetect import detect
from transformers import pipeline
import torch

# Initialize PaddleOCR for multilingual text recognition
ocr = PaddleOCR(use_angle_cls=True, lang='ar')  # Using 'ar' to support Arabic scripts like Urdu

# Load summarization model
summarizer = pipeline("summarization")

def recognize_text(image_path):
    image = Image.open(image_path)
    img_array = np.array(image)
    # OCR processing
    ocr_results = ocr.ocr(img_array, cls=True)
    # Extracting text from OCR results
    detected_text = " ".join([line[1][0] for line in ocr_results[0]])
    # Language detection and summarization
    language = detect(detected_text)
    summary = summarizer(detected_text, max_length=50, min_length=25, do_sample=False)[0]['summary_text']
    return detected_text, language, summary

def display_ocr_results(image, ocr_results):
    boxes = [line[0] for line in ocr_results[0]]
    texts = [line[1][0] for line in ocr_results[0]]
    scores = [line[1][1] for line in ocr_results[0]]
    font_path = "/path/to/font.ttf"  # Replace with a valid path to a font supporting Urdu/Arabic
    return draw_ocr(np.array(image), boxes, texts, scores, font_path=font_path)

# Streamlit Interface
st.title("Multilingual OCR and Text Summarization App")
st.write("Upload an image or capture one to get OCR results and text summary")

# Image Upload or Capture
image_file = st.file_uploader("Choose an image file", type=["jpg", "jpeg", "png"])
if image_file is not None:
    with open("uploaded_image.png", "wb") as f:
        f.write(image_file.getbuffer())
    st.success("Image uploaded successfully!")
    image = Image.open("uploaded_image.png")
    st.image(image, caption="Uploaded Image", use_container_width=True)

    # Perform OCR and display results
    detected_text, language, summary = recognize_text("uploaded_image.png")
    st.write("### Detected Text")
    st.write(detected_text)
    st.write("### Detected Language")
    st.write(language)
    st.write("### Text Summary")
    st.write(summary)

    # Display OCR visualization
    visualized_image = display_ocr_results(image, ocr.ocr(np.array(image), cls=True))
    st.image(visualized_image, caption="OCR Results Visualization", use_container_width=True)