File size: 2,288 Bytes
d13efc1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import gradio as gr
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
import requests
from PIL import Image

url = 'https://huggingface.co/yhshin/latex-ocr/raw/main/tokenizer-wordlevel.json'
r = requests.get(url)
open('tokenizer-wordlevel.json' , 'wb').write(r.content)


processor = TrOCRProcessor.from_pretrained("microsoft/trocr-small-printed")
model = VisionEncoderDecoderModel.from_pretrained("yhshin/latex-ocr")

from tokenizers import Tokenizer
tokenizer = Tokenizer.from_file("tokenizer-wordlevel.json")

# load image examples

def process_image(image):
    # prepare image
    pixel_values = processor(image, return_tensors="pt").pixel_values

    # generate (no beam search)
    generated_ids = model.generate(pixel_values)

    # decode
    generated_text = tokenizer.decode_batch(generated_ids.tolist(), skip_special_tokens=True)[0]

    # Strip spaces
    generated_text = generated_text.replace(" ", "")

    return generated_text

# !ls examples | grep png

# +
title = "Convert image to LaTeX source code"

with open('article.md',mode='r') as file:
    article = file.read()

description = """
This is a demo of machine learning model trained to reconstruct the LaTeX source code of an equation from an image.
To use it, simply upload an image or use one of the example images below and click 'submit'.
Results will show up in a few seconds.

Try rendering the generated LaTeX [here](https://quicklatex.com/) to compare with the original.
(The model is not perfect yet, so you may need to edit the resulting LaTeX a bit to get it to render a good match.)

"""

examples = [
    [ "examples/1d32874f02.png" ],
    [ "examples/1e466b180d.png" ],
    [ "examples/2d3503f427.png" ],
    [ "examples/2f9d3c4e43.png" ],
    [ "examples/51c5cc2ff5.png" ],
    [ "examples/545a492388.png" ],
    [ "examples/6a51a30502.png" ],
    [ "examples/6bf6832adb.png" ],
    [ "examples/7afdeff0e6.png" ],
    [ "examples/b8f1e64b1f.png" ],
]
# -

iface = gr.Interface(fn=process_image, 
                     inputs=[gr.inputs.Image(type="pil")],
                     outputs=gr.outputs.Textbox(),
                     title=title,
                     description=description,
                     article=article,
                     examples=examples)
iface.launch()