Loren's picture
Upload 26 files (#6)
c957723 verified
import streamlit as st
import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
st.markdown("""
<style>
.block-container {
padding-top: 1rem;
padding-bottom: 1rem;
padding-left: 1rem;
padding-right: 2rem;
}
</style>
""", unsafe_allow_html=True)
st.markdown('''#### :orange[OCR solutions comparator]''')
st.write("")
lib = "This application's tab allows you to compare, from a given image, the results of different solutions: \n*EasyOcr, PaddleOCR, MMOCR, Tesseract*"
st.markdown(lib)
with st.expander("See details:"):
st.markdown(''' The 1st step is to choose the language for the text recognition (not all solutions \
support the same languages), and then choose the picture to consider. It is possible to upload a file, \
to take a picture, or to use a demo file. \
It is then possible to change the default values for the text area detection process, \
before launching the detection task for each solution.\n
The different results are then presented.
The 2nd step is to choose one of these \
detection results, in order to carry out the text recognition process there. It is also possible to change \
the default settings for each solution.''')
st.write("")
st.markdown("###### The recognition results appear in 2 formats:")
st.markdown(''' - a visual format resumes the initial image, replacing the detected areas with \
the recognized text. The background is + or - strongly colored in green according to the \
confidence level of the recognition.
A slider allows you to change the font size, another \
allows you to modify the confidence threshold above which the text color changes: if it is at \
70% for example, then all the texts with a confidence threshold higher or equal to 70 will appear \
in white, in black otherwise.''')
st.markdown(" - a detailed format presents the results in a table, for each text box detected. \
It is possible to download this results in a local csv file.")
st.markdown('-----')
lib = "But, :orange[before evaluating OCR solutions], you may want to verify that the image is \
of sufficient quality for an OCR task. And if it isn't, you might want to be able to \
improve its quality.\n This is what the application's tab 'Image processing' allows you to do."
st.markdown(lib)
st.markdown('''#### :orange[Image quality verification and improvement]''')
with st.expander("See details:", expanded=True):
st.write('''Here, you can run a recognition test with basic PPOCR. This displays the text areas \
detected in the image, along with their values and probabilities.''')
st.markdown('The **Image Processing** tab offers several operations: resize, rotate, filtering, \
morphological transformations, and thresholding.')
st.write('Special care has been taken to document the various operations, including links to \
documentation and explanatory pop-ups for the various parameters:')
st.image("doc.png", width=500)
st.markdown('For each operation, you can choose whether or not to apply the transformation \
to the image being processed using the **"Apply"** toggle.')
st.markdown('When the result is satisfactory, you can view a detailed list of the various \
operations performed on the original image using the **"List of operations"** button.')
st.markdown('Finally, you can download the resulting image.')