Spaces:
Running
Running
File size: 1,792 Bytes
8f25cfa 10e586f 8f25cfa |
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 |
import pandas as pd
import numpy as np
import streamlit as st
import easyocr
import cv2
import PIL
from PIL import Image
from matplotlib import pyplot as plt
# main title
st.title("Get text from image with EasyOCR")
# subtitle
st.markdown("## EasyOCRR with Streamlit")
# upload image file
image = st.file_uploader(label = "Upload your image", type=['png', 'jpg', 'jpeg'])
#read the csv file and display the dataframe
if file is not None:
image = Image.open(file) # read image with PIL library
st.image(image) #display
# it will only detect the English and Turkish part of the image as text
reader = easyocr.Reader(['tr','en'], gpu=False)
result = reader.readtext(np.array(image)) # turn image to numpy array
# collect the results in dictionary:
textdic_easyocr = {}
for idx in range(len(result)):
pred_coor = result[idx][0]
pred_text = result[idx][1]
pred_confidence = result[idx][2]
textdic_easyocr[pred_text] = {}
textdic_easyocr[pred_text]['pred_confidence'] = pred_confidence
df = pd.DataFrame.from_dict(textdic_easyocr).T
st.table(df)
ax1.plot(agg_df.year, agg_df.rating)
st.pyplot(fig1)
for res in result:
top_left = tuple(res[0][0]) # top left coordinates as tuple
bottom_right = tuple(res[0][2]) # bottom right coordinates as tuple
# draw rectangle on image, 2 is thickness
cv2.rectangle(image, top_left, bottom_right, (0, 255, 0), 2)
# write recognized text on image (top_left) minus 10 pixel on y
cv2.putText(image, res[1], (top_left[0], top_left[1]-10), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
fig1, ax1 = plt.subplots()
plt.imshow(image)
plt.show()
else:
st.write("Upload your image")
|