efengx
fix: update
9d2915e
raw
history blame
2.54 kB
import easyocr as ocr #OCR
import streamlit as st #Web App
from PIL import Image #Image Processing
import numpy as np #Image Processing
import base64
from st_clickable_images import clickable_images
if "language" not in st.session_state:
st.session_state.language=['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")
st.multiselect(
'Select extract language',
['en', 'zh', 'ja'],
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
)