Spaces:
Sleeping
Sleeping
from PIL import Image | |
import pytesseract | |
import easyocr | |
import cv2 | |
import os | |
from io import BytesIO | |
import matplotlib.pyplot as plt | |
import streamlit as st | |
DET_ARCHS = ["pytesseract", "easyocr"] | |
def main(): | |
# Wide mode | |
st.set_page_config(layout="wide") | |
# Designing the interface | |
st.title("Image Text Recognition") | |
# For newline | |
st.write('\n') | |
# Instructions | |
st.markdown("*Hint: click on the top-right corner of an image to enlarge it!*") | |
# Set the columns | |
cols = st.columns((1, 1, 1, 1)) | |
cols[0].subheader("Input image") | |
cols[1].subheader("OCR output") | |
# Sidebar | |
# File selection | |
st.sidebar.title("Document selection") | |
# Disabling warning | |
# st.set_option('deprecation.showfileUploaderEncoding', False) | |
# Choose your own image | |
uploaded_file = st.sidebar.file_uploader("Upload files", type=['png', 'jpeg', 'jpg']) | |
if uploaded_file is not None: | |
doc = uploaded_file.read() | |
cols[0].image(doc) | |
# Model selection | |
st.sidebar.title("Model selection") | |
det_arch = st.sidebar.selectbox("OCR model", DET_ARCHS) | |
# For newline | |
st.sidebar.write('\n') | |
if st.sidebar.button("Analyze image"): | |
if uploaded_file is None: | |
st.sidebar.write("Please upload an image") | |
else: | |
with st.spinner("Loading model..."): | |
if det_arch == 'pytesseract': | |
predictor = pytesseract.image_to_string(Image.open(BytesIO(doc))) | |
else: | |
reader = easyocr.Reader(['en']) | |
predictor = reader.readtext(doc, detail = 0) | |
with st.spinner('Analyzing...'): | |
# Plot OCR output | |
if det_arch == 'pytesseract': | |
cols[1].text(predictor) | |
else: | |
cols[1].text(''.join(predictor)) | |
if __name__ == '__main__': | |
main() | |
# pipeline = pipeline(task="image-classification", model="julien-c/hotdog-not-hotdog") | |
# def predict(input_img): | |
# predictions = pipeline(input_img) | |
# return input_img, {p["label"]: p["score"] for p in predictions} | |
# def recognize(input_img): | |
# text = pytesseract.image_to_string(Image.open("./data/" + filename)) | |
# return input_img, text | |
# gradio_app = gr.Interface( | |
# recognize, | |
# inputs=[gr.Image(label="Upload an Image", type="pil")], | |
# outputs=[gr.Textbox(label="Text in the Image")], | |
# title="Extrate Text From Image", | |
# ) | |
# if __name__ == "__main__": | |
# gradio_app.launch(server_port=8756) | |