File size: 2,476 Bytes
120e659 6ca2703 cc3aad6 3ebf562 120e659 6dd2ec6 6ca2703 120e659 849cfbb 120e659 6ca2703 120e659 2ba33db 120e659 6ca2703 120e659 6ca2703 8973c03 120e659 e4c3e4a 8973c03 e4c3e4a 6ca2703 cc3aad6 e4c3e4a 120e659 e4c3e4a 6ca2703 e4c3e4a 6ca2703 e4c3e4a 6ca2703 e4c3e4a 120e659 eff43d3 6ca2703 120e659 e4c3e4a 120e659 6ca2703 120e659 6ca2703 849cfbb 120e659 6ca2703 120e659 6ca2703 849cfbb 120e659 6ca2703 2ba33db |
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 65 66 67 68 69 70 71 72 73 74 75 76 77 |
import pandas as pd
import numpy as np
import streamlit as st
import easyocr
from PIL import Image, ImageDraw
from streamlit_drawable_canvas import st_canvas
def rectangle(image, result):
"""Draw rectangles on the image based on predicted coordinates."""
draw = ImageDraw.Draw(image)
for res in result:
top_left = tuple(res[0][0]) # top left coordinates as a tuple
bottom_right = tuple(res[0][2]) # bottom right coordinates as a tuple
draw.rectangle((top_left, bottom_right), outline="blue", width=2)
# Display the image on Streamlit
st.image(image)
# Main title
st.title("Get text from an image with EasyOCR")
# Subtitle
st.markdown("## EasyOCR with Streamlit")
# Upload image file or draw
st.markdown("## Upload an Image or Draw")
col1, col2 = st.columns(2)
with col1:
file = st.file_uploader("Upload Here", type=['png', 'jpg', 'jpeg'])
with col2:
# Drawable canvas
canvas_result = st_canvas(
fill_color="rgba(255, 165, 0, 0.3)",
stroke_width=3,
stroke_color="#ffffff",
background_color="#000000",
background_image=None if file else st.session_state.get("background", None),
update_streamlit=True,
width=400,
height=400,
drawing_mode="freedraw",
key="canvas",
)
image = None # Initialize image variable
# Process uploaded image or drawing
if file is not None:
image = Image.open(file) # Read image with PIL library
elif canvas_result.image_data is not None:
image = Image.fromarray(np.array(canvas_result.image_data, dtype=np.uint8)).convert('RGB')
if image is not None:
st.image(image) # Display the image
# Initialize EasyOCR reader; you can add or remove languages based on your preference
reader = easyocr.Reader(['en'], gpu=False)
result = reader.readtext(np.array(image)) # Convert image to numpy array and process with EasyOCR
# Print all predicted text
for idx, res in enumerate(result):
pred_text = res[1]
st.write(pred_text)
# Collect the results in a dictionary
textdic_easyocr = {res[1]: {'pred_confidence': res[2]} for res in result}
# Create a DataFrame to show the predicted text and prediction confidence
df = pd.DataFrame.from_dict(textdic_easyocr).T
st.table(df)
# Draw rectangles around the detected text in the image
rectangle(image, result)
else:
st.write("Please upload an image or use the canvas to draw.")
|