easyocr / app.py
pelinbalci's picture
Update app.py
13f125e
raw
history blame
1.79 kB
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")