import os
from PIL import Image
import streamlit
from pix2tex.cli import LatexOCR
from munch import Munch

args = Munch({'config': 'settings/config.yaml',
              'checkpoint': os.path.realpath(os.path.join(os.path.dirname(__file__), 'checkpoints/weights.pth')),
              'no_resize': False})
model = LatexOCR(args)

if __name__ == '__main__':
    streamlit.set_page_config(page_title='LaTeX-OCR')
    streamlit.title('LaTeX OCR')
    streamlit.markdown(
        'Convert images of equations to corresponding LaTeX code.\n\nThis is based on the `pix2tex` module. Check it out [![github](https://img.shields.io/badge/LaTeX--OCR-visit-a?style=social&logo=github)](https://github.com/lukas-blecher/LaTeX-OCR)')

    uploaded_file = streamlit.file_uploader(
        'Upload an image an equation',
        type=['png', 'jpg'],
    )

    if uploaded_file is not None:
        image = Image.open(uploaded_file)
        streamlit.image(image)
    else:
        streamlit.text('\n')

    if streamlit.button('Convert'):
        if uploaded_file is not None and image is not None:
            with streamlit.spinner('Computing'):
                try:
                    latex_code = model(image)
                    streamlit.code(latex_code, language='latex')
                    streamlit.markdown(f'$\\displaystyle {latex_code}$')
                except Exception as e:
                    streamlit.error(e)
        else:
            streamlit.error('Please upload an image.')