efengx
fix: update
23dfaea
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
)