import streamlit as st import os os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" st.markdown(""" """, 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.')