Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,281 Bytes
2a0d582 21c87da c115883 21c87da c115883 e6c2b26 5c2cbe3 44c7f77 e6c2b26 c115883 381bbf4 5c2cbe3 21c87da 5eb89c4 c115883 21c87da e6c2b26 21c87da 381bbf4 21c87da 381bbf4 21c87da e6c2b26 21c87da 3bc2cfb 21c87da c115883 5eb89c4 2a0d582 44c7f77 c115883 44c7f77 c115883 44c7f77 c115883 44c7f77 c115883 44c7f77 21c87da 44c7f77 c115883 44c7f77 c115883 44c7f77 |
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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
import shutil
import gradio as gr
import os
from app.gradio_config import css, theme
from app.tabs.submit import (
submit,
custom_template_yaml,
collection_submit_state,
)
from app.tabs.visualizer import visualizer, collection_viz_state, viz_image_gallery
from app.tabs.templating import (
templating_block,
TEMPLATE_IMAGE_FOLDER,
TEMPLATE_YAML_FOLDER,
template_output_yaml_code,
)
from htrflow.models.huggingface.trocr import TrOCR
gr.set_static_paths(paths=[TEMPLATE_IMAGE_FOLDER])
gr.set_static_paths(paths=[TEMPLATE_YAML_FOLDER])
def load_markdown(language, section, content_dir="app/content"):
"""Load markdown content from files."""
if language is None:
file_path = os.path.join(content_dir, f"{section}.md")
else:
file_path = os.path.join(content_dir, language, f"{section}.md")
if os.path.exists(file_path):
with open(file_path, "r", encoding="utf-8") as f:
return f.read()
return f"## Content missing for {file_path} in {language}"
with gr.Blocks(title="HTRflow", theme=theme, css=css) as demo:
with gr.Row():
with gr.Column(scale=1):
pass
with gr.Column(scale=2):
gr.Markdown(load_markdown(None, "main_title"))
with gr.Column(scale=1):
gr.Markdown(load_markdown(None, "main_sub_title"))
with gr.Tabs(elem_classes="top-navbar") as navbar:
with gr.Tab(label="Templating") as tab_templating:
templating_block.render()
with gr.Tab(label="Submit Job") as tab_submit:
submit.render()
with gr.Tab(label="Visualize Result") as tab_visualizer:
visualizer.render()
@demo.load()
def inital_yaml_code():
tmp_dir = "tmp/"
if os.path.exists(tmp_dir) and os.path.isdir(tmp_dir):
shutil.rmtree(tmp_dir)
@demo.load(
inputs=[template_output_yaml_code],
outputs=[template_output_yaml_code],
)
def inital_yaml_code(template_output_yaml_code):
return template_output_yaml_code
@demo.load()
def inital_trocr_load():
return TrOCR("Riksarkivet/trocr-base-handwritten-hist-swe-2")
def sync_gradio_objects(input_value, state_value):
"""Synchronize the YAML state if there is a mismatch."""
return input_value if input_value != state_value else gr.skip()
def sync_gradio_object_state(input_value, state_value):
"""Synchronize the Collection."""
state_value = input_value
return state_value if state_value is not None else gr.skip()
tab_templating.select(
inputs=[custom_template_yaml, template_output_yaml_code],
outputs=[template_output_yaml_code],
fn=sync_gradio_objects,
)
tab_submit.select(
inputs=[template_output_yaml_code, custom_template_yaml],
outputs=[custom_template_yaml],
fn=sync_gradio_objects,
)
tab_visualizer.select(
inputs=[collection_submit_state, collection_viz_state],
outputs=[collection_viz_state],
fn=sync_gradio_object_state,
)
demo.queue()
if __name__ == "__main__":
demo.launch(
server_name="0.0.0.0",
server_port=7864,
enable_monitoring=False,
# show_error=True,
)
|