Spaces:
Runtime error
Runtime error
import easyocr as ocr | |
import streamlit as st | |
from PIL import Image | |
import numpy as np | |
import base64 | |
from st_clickable_images import clickable_images | |
if "language" not in st.session_state: | |
st.session_state.language=['ch_tra', 'en'] | |
if "output_text" not in st.session_state: | |
st.session_state.output_text="" | |
if "image" not in st.session_state: | |
st.session_state.image="" | |
def extract_text(): | |
language=st.session_state.language | |
st.session_state.image=st.session_state.uploaded_file | |
if st.session_state.image: | |
st.session_state.output_text=rjxai_extract( | |
language, | |
st.session_state.image | |
) | |
else: | |
st.session_state.image="" | |
st.session_state.output_text="" | |
def rjxai_extract( | |
language, | |
uploaded_file, | |
): | |
input_image=Image.open(uploaded_file) | |
reader=ocr.Reader(language, model_storage_directory='.') | |
result=reader.readtext(np.array(input_image)) | |
result_text = [] | |
for text in result: | |
result_text.append(text[1]) | |
return ", ".join(result_text) | |
# side | |
with st.sidebar: | |
st.header("示例") | |
images = [] | |
with open("assets/example/1.jpg", "rb") as image: | |
encoded=base64.b64encode(image.read()).decode() | |
images.append(f"data:image/jpeg;base64,{encoded}") | |
clicked=clickable_images( | |
images, | |
titles=[f"Image #{str(i)}" for i in range(len(images))], | |
div_style={"display": "flex", "justify-content": "center", "flex-wrap": "wrap"}, | |
img_style={"margin": "5px", "height": "200px"}, | |
key="clicked" | |
) | |
if st.session_state.clicked==0: | |
st.session_state.image="assets/example/1.jpg" | |
st.session_state.output_text=rjxai_extract( | |
st.session_state.language, | |
"assets/example/1.jpg" | |
) | |
# content | |
with st.container(): | |
st.header("Rjxai v4") | |
st.subheader("Extract Text from Images") | |
# 参考:https://github.com/JaidedAI/EasyOCR/issues/989 | |
# st.multiselect( | |
# 'Select extract language', | |
# ['en', 'ch_sim', 'ch_tra', 'ja', 'es', 'fr', 'fa'], | |
# key="language" | |
# ) | |
uploaded_file=st.file_uploader( | |
label = "Upload your image here: png, jpg, jpeg", | |
type=['png','jpg','jpeg'], | |
on_change=extract_text, | |
key="uploaded_file", | |
) | |
if st.session_state.image: | |
input_image=Image.open(st.session_state.image) | |
st.image(input_image) | |
if st.session_state.output_text: | |
st.text_area( | |
"extract text:", | |
key="output_text", | |
disabled=True | |
) |