from scipy.misc import imread,imshow
|
|
import os
|
|
from PIL import Image
|
|
import PIL
|
|
|
|
from model.img2seq import Img2SeqModel
|
|
from model.utils.general import Config, run
|
|
from model.utils.text import Vocab
|
|
from model.utils.image import greyscale, crop_image, pad_image,predictsize ,\
|
|
downsample_image, TIMEOUT
|
|
|
|
|
|
|
|
def interactive_shell(model):
|
|
"""Creates interactive shell to play with model
|
|
"""
|
|
model.logger.info("""
|
|
This is an interactive mode.
|
|
To exit, enter 'exit'.
|
|
Enter a path to a file
|
|
input> data/images_test/0.png""")
|
|
|
|
while True:
|
|
|
|
img_path = input("input> ")
|
|
|
|
if img_path == "exit":
|
|
break
|
|
|
|
if img_path[-3:] == "png":
|
|
img = imread(img_path)
|
|
|
|
elif img_path[-3:] == "pdf":
|
|
# call magick to convert the pdf into a png file
|
|
buckets = [
|
|
[240, 100], [320, 80], [400, 80], [400, 100], [480, 80], [480, 100],
|
|
[560, 80], [560, 100], [640, 80], [640, 100], [720, 80], [720, 100],
|
|
[720, 120], [720, 200], [800, 100], [800, 320], [1000, 200],
|
|
[1000, 400], [1200, 200], [1600, 200], [1600, 1600]
|
|
]
|
|
|
|
dir_output = "tmp/"
|
|
name = img_path.split('/')[-1].split('.')[0]
|
|
run("magick convert -density {} -quality {} {} {}".format(200, 100,
|
|
img_path, dir_output+"{}.png".format(name)), TIMEOUT)
|
|
img_path = dir_output + "{}.png".format(name)
|
|
crop_image(img_path, img_path)
|
|
pad_image(img_path, img_path, buckets=buckets)
|
|
downsample_image(img_path, img_path, 2)
|
|
|
|
img = imread(img_path)
|
|
|
|
img = predictsize(img)
|
|
im_converted = PIL.Image.fromarray(img)
|
|
im_converted.show()
|
|
img = greyscale(img)
|
|
|
|
hyps = model.predict(img)
|
|
with open("norm_formula_val.txt", "w") as f:
|
|
f.write(hyps[0])
|
|
model.logger.info(hyps[0])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# restore config and model
|
|
dir_output = "results/full/"
|
|
config_vocab = Config(dir_output + "vocab.json")
|
|
config_model = Config(dir_output + "model.json")
|
|
vocab = Vocab(config_vocab)
|
|
|
|
model = Img2SeqModel(config_model, dir_output, vocab)
|
|
model.build_pred()
|
|
model.restore_session(dir_output + "model.weights4/test-model.ckpt")
|
|
interactive_shell(model)
|