|
import streamlit as st |
|
from streamlit_drawable_canvas import st_canvas |
|
import cv2 |
|
import numpy as np |
|
from tensorflow.keras.models import load_model |
|
from PIL import Image |
|
import easyocr |
|
import pandas as pd |
|
|
|
|
|
model = load_model('mm.h5') |
|
|
|
|
|
reader = easyocr.Reader(['en'], gpu=False) |
|
|
|
class_lists = [ |
|
"0", |
|
"1", |
|
"2", |
|
"3", |
|
"4", |
|
"5", |
|
"6", |
|
"7", |
|
"8", |
|
"9", |
|
"Ah", |
|
"Aha", |
|
"au2", |
|
"au3", |
|
"ay2", |
|
"ba_htoat_chite", |
|
"ba_kone", |
|
"da_htway", |
|
"da_out_chite", |
|
"da_yay_hmote", |
|
"da_yin_kout", |
|
"e1", |
|
"e2", |
|
"eeare", |
|
"ga_khi", |
|
"ga_nge", |
|
"ha", |
|
"hsa_lain", |
|
"hta_hsin_htu", |
|
"hta_wun_beare", |
|
"ka_kji", |
|
"kha_khway", |
|
"la", |
|
"la_kji", |
|
"ma", |
|
"na_kji", |
|
"na_ngear", |
|
"nga", |
|
"nga_kyi", |
|
"O", |
|
"pa_sout", |
|
"pfa_u_htoat", |
|
"sah_lone", |
|
"ta_thun_lyin_chate", |
|
"ta_wun_pu", |
|
"tha", |
|
"u1", |
|
"u2", |
|
"un", |
|
"wa", |
|
"yah_kout", |
|
"yah_pet_let", |
|
"za_kwear", |
|
"za_myin_hsware" |
|
] |
|
|
|
|
|
st.title('Text and Character Recognizer') |
|
st.markdown(''' |
|
Select the mode for recognition: |
|
''') |
|
|
|
|
|
mode = st.radio("Mode", ('English Text Recognition', 'Myanmar Character Recognition')) |
|
|
|
if mode == 'English Text Recognition': |
|
uploaded_file = st.file_uploader("Upload your file here...", key="uploader_english") |
|
if uploaded_file is not None: |
|
image = Image.open(uploaded_file) |
|
st.image(image, caption='Uploaded Image', use_column_width=True) |
|
|
|
|
|
result = reader.readtext(np.array(image)) |
|
for detection in result: |
|
st.write(f'Detected text: {detection[1]}, Confidence: {detection[2]}') |
|
|
|
elif mode == 'Myanmar Character Recognition': |
|
col1, col2 = st.columns(2) |
|
|
|
with col1: |
|
uploaded_file = st.file_uploader("Upload your file here...", key="uploader_myanmar") |
|
|
|
with col2: |
|
|
|
canvas_result = st_canvas( |
|
fill_color="rgba(255, 165, 0, 0.3)", |
|
stroke_width=3, |
|
stroke_color="#ffffff", |
|
background_color="#000000", |
|
update_streamlit=True, |
|
width=200, |
|
height=200, |
|
drawing_mode="freedraw", |
|
key="canvas", |
|
) |
|
|
|
|
|
image_data = None |
|
if uploaded_file is not None: |
|
image_data = Image.open(uploaded_file).convert('RGB') |
|
elif canvas_result.image_data is not None: |
|
image_data = Image.fromarray(np.uint8(canvas_result.image_data)).convert('RGB') |
|
|
|
if image_data is not None: |
|
|
|
image_cv = np.array(image_data) |
|
image_cv = cv2.cvtColor(image_cv, cv2.COLOR_RGB2BGR) |
|
resized_image = cv2.resize(image_cv, (200, 200)) |
|
|
|
model_input = resized_image[np.newaxis, :, :, :3] |
|
|
|
st.write('Model Input') |
|
st.image(model_input, width=200) |
|
|
|
if st.button('Predict Myanmar Character'): |
|
|
|
val = model.predict(model_input) |
|
predicted_class_index = np.argmax(val) |
|
mm_text = class_lists[predicted_class_index] |
|
st.write(f'Result: {mm_text}, Index: {predicted_class_index}') |
|
st.bar_chart(val[0]) |
|
else: |
|
if mode == 'Myanmar Character Recognition': |
|
st.write("Please upload an image or draw in the canvas above.") |
|
|