File size: 2,390 Bytes
c245399
 
07738b3
c245399
 
9198199
 
 
794a732
 
b2fe7c6
3864753
 
 
 
794a732
 
 
 
 
bae448a
fa20230
794a732
 
b2fe7c6
 
 
03adfe3
47d42b8
78f8450
 
9198199
60b6939
fa20230
 
 
9198199
f0f9c29
 
 
3864753
f0f9c29
fa20230
f0f9c29
 
 
 
fa20230
f0f9c29
 
 
 
fa20230
f0f9c29
 
fa20230
 
 
270b39e
9198199
47d42b8
 
794a732
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
60
61
62
63
64
import streamlit as st
import tensorflow as tf
import numpy as np
from PIL import Image
import cv2

labels = ["Column","Header","Table"]
threshold = 0.75
model = tf.saved_model.load("best_saved_model") #Loading the saved model

def process_img(img): 
    img = img.resize((640,640))      # resize the image as reqired for the model input
    img = np.array(img)              # Convert Pil Object into numpy array
    copy_img = img.copy()            # Save a copy for backup
    img = img/255                    # Normalizing the pixel value 
    img = img.astype("float32")      # Convert the format double to format float
    img = np.expand_dims(img,axis=0) # exapanding dimension to add batch
    return img,copy_img

st.title("Table Extract")
file_name = st.file_uploader("Upload a report image")

if file_name is not None:
    col1, col2 = st.columns(2)
    
    image = Image.open(file_name)
    input_image, copy_img= process_img(image)
    col1.header("Input Image")
    col1.image(input_image, use_column_width=True)

    bbox,confidance,classes,nc = model(input_image)
    bbox,confidance , classes , nc  = bbox[0].numpy(),confidance[0].numpy(),classes[0].numpy(),nc[0].numpy()
    st.subheader("Detected Result")
    table_count =0
    header_count = 0
    column_count = 0
    for i in range(nc):
        if confidance[i] >= threshold:
            x1,y1,x2,y2 = bbox[i]*640
            class_name = labels[int(classes[i])]
            st.text(class_name+" : "+str(int(confidance[i]*100))+"%")
            if class_name =="Header":
                header_count+=1
                color = (0,0,255) #Blue color
                cv2.rectangle(copy_img, (int(x1), int(y1)), (int(x2), int(y2)),color, 2)
    
            if class_name =="Column":
                column_count+=1
                color = (0,255,0) #Green color
                cv2.rectangle(copy_img, (int(x1), int(y1)), (int(x2), int(y2)),color, 2)
    
            if class_name =="Table":
                table_count+=1
                color = (255,0,0) #Red color
                cv2.rectangle(copy_img, (int(x1), int(y1)), (int(x2), int(y2)),color, 2)
    st.text("No of Table  Detected : "+str(table_count))
    st.text("No of Header Detected : "+str(header_count))
    st.text("No of Column Detected : "+str(column_count))
    col2.header("Output Result")
    col2.image(copy_img, use_column_width=True)