easyocr / app.py
pelinbalci's picture
fix
95ad252
import pandas as pd
import numpy as np
import streamlit as st
import easyocr
import PIL
from PIL import Image, ImageDraw
def rectangle(image, result):
# https://www.blog.pythonlibrary.org/2021/02/23/drawing-shapes-on-images-with-python-and-pillow/
""" draw rectangles on image based on predicted coordinates"""
draw = ImageDraw.Draw(image)
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((top_left, bottom_right), outline="blue", width=2)
#display image on streamlit
st.image(image)
# main title
st.title("Get text from image with EasyOCR")
# subtitle
st.markdown("## EasyOCR with Streamlit")
# upload image file
file = st.file_uploader(label = "Upload Here", 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(['en','ja'], gpu=False)
result = reader.readtext(np.array(image)) # turn image to numpy array
# Add a placeholder
# latest_iteration = st.empty()
# bar = st.progress(0)
# for i in range(100):
# Update the progress bar with each iteration.
# latest_iteration.text(f'Iteration {i+1}')
# bar.progress(i + 1)
# time.sleep(0.1)
# print all predicted text:
for idx in range(len(result)):
pred_text = result[idx][1]
st.write(pred_text)
# collect the results in the 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
# create a data frame which shows the predicted text and prediction confidence
df = pd.DataFrame.from_dict(textdic_easyocr).T
st.table(df)
# get boxes on the image
rectangle(image, result)
st.spinner(text="In progress...")
else:
st.write("Upload your image")