Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,689 Bytes
c115883 60d8ae5 c115883 381bbf4 60d8ae5 0658a37 5c2cbe3 21c87da e03657f c115883 f9141c6 e03657f be3c9c0 e03657f be3c9c0 3cb882a be3c9c0 e03657f be3c9c0 e03657f 60d8ae5 e03657f 21c87da 60d8ae5 21c87da 381bbf4 21c87da 381bbf4 21c87da 60d8ae5 3bc2cfb f9141c6 c115883 5eb89c4 f9141c6 60d8ae5 e03657f c115883 f9141c6 c115883 44c7f77 60d8ae5 21c87da 60d8ae5 |
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 |
import os
import gradio as gr
from htrflow.models.huggingface.trocr import TrOCR
from app.gradio_config import css, theme
from app.tabs.export import collection as collection_export_state
from app.tabs.export import export
from app.tabs.submit import collection_submit_state, submit
from app.tabs.visualizer import collection as collection_viz_state
from app.tabs.visualizer import visualizer
TEMPLATE_YAML_FOLDER = "app/assets/templates"
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}"
def activate_tab(collection):
return gr.update(interactive = collection is not None)
matomo = """
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['setDomains', ['*.riksarkivet.se', 'huggingface.co']]);
_paq.push(['enableCrossDomainLinking']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://matomo.riksarkivet.se/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '25']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<noscript><p><img referrerpolicy="no-referrer-when-downgrade" src="https://matomo.riksarkivet.se/matomo.php?idsite=25&rec=1" style="border:0;" alt="" /></p></noscript>
<!-- End Matomo Code -->
"""
with gr.Blocks(title="HTRflow", theme=theme, css=css, head=matomo) 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="Upload") as tab_submit:
submit.render()
with gr.Tab(label="Result", interactive=False, id="result") as tab_visualizer:
visualizer.render()
with gr.Tab(label="Export", interactive=False) as tab_export:
export.render()
@demo.load()
def inital_trocr_load():
TrOCR("Riksarkivet/trocr-base-handwritten-hist-swe-2")
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()
collection_submit_state.change(activate_tab, collection_submit_state, tab_visualizer)
collection_submit_state.change(activate_tab, collection_submit_state, tab_export)
collection_submit_state.change(lambda: gr.Tabs(selected="result"), outputs=navbar)
tab_visualizer.select(
inputs=[collection_submit_state, collection_viz_state],
outputs=[collection_viz_state],
fn=sync_gradio_object_state,
)
tab_export.select(
inputs=[collection_submit_state, collection_export_state],
outputs=[collection_export_state],
fn=sync_gradio_object_state,
)
demo.queue()
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860, enable_monitoring=True, show_api=False)
|