LICENSE
README.md
pyproject.toml
src/artifice_ocr/__init__.py
src/artifice_ocr/_backend.py
src/artifice_ocr/_chunking.py
src/artifice_ocr/_confidence.py
src/artifice_ocr/_diff.py
src/artifice_ocr/_guard.py
src/artifice_ocr/_llm.py
src/artifice_ocr/_logging.py
src/artifice_ocr/_normalise.py
src/artifice_ocr/_prompts.py
src/artifice_ocr/_retry.py
src/artifice_ocr/cli.py
src/artifice_ocr/config.py
src/artifice_ocr/export_ludwiglang.py
src/artifice_ocr/history.py
src/artifice_ocr/jobs.py
src/artifice_ocr/pdf_export.py
src/artifice_ocr/pipeline.py
src/artifice_ocr/tropy.py
src/artifice_ocr/tropy_read.py
src/artifice_ocr/tropy_write.py
src/artifice_ocr/utils.py
src/artifice_ocr/validation.py
src/artifice_ocr.egg-info/PKG-INFO
src/artifice_ocr.egg-info/SOURCES.txt
src/artifice_ocr.egg-info/dependency_links.txt
src/artifice_ocr.egg-info/entry_points.txt
src/artifice_ocr.egg-info/requires.txt
src/artifice_ocr.egg-info/top_level.txt
src/artifice_ocr/prompts/cleanup_prompt.txt
src/artifice_ocr/prompts/structure_prompt.txt
src/artifice_ocr/prompts/translation_prompt.txt
src/artifice_ocr/stages/cleanup.py
src/artifice_ocr/stages/ocr.py
src/artifice_ocr/stages/structure.py
src/artifice_ocr/stages/translate.py
src/artifice_ocr/web/__init__.py
src/artifice_ocr/web/models.py
src/artifice_ocr/web/runtime.py
src/artifice_ocr/web/serializers.py
src/artifice_ocr/web/server.py
src/artifice_ocr/web/validation.py
src/artifice_ocr/web/fonts/LibreBaskerville-Italic.ttf
src/artifice_ocr/web/fonts/LibreBaskerville.ttf
src/artifice_ocr/web/fonts/OFL-LibreBaskerville.txt
src/artifice_ocr/web/fonts/OFL-PlayfairDisplay.txt
src/artifice_ocr/web/fonts/PlayfairDisplay-Italic.ttf
src/artifice_ocr/web/fonts/PlayfairDisplay.ttf
src/artifice_ocr/web/routers/__init__.py
src/artifice_ocr/web/routers/analytics.py
src/artifice_ocr/web/routers/byom.py
src/artifice_ocr/web/routers/events.py
src/artifice_ocr/web/routers/history.py
src/artifice_ocr/web/routers/ludwiglang.py
src/artifice_ocr/web/routers/pdf_export.py
src/artifice_ocr/web/routers/queue.py
src/artifice_ocr/web/routers/run.py
src/artifice_ocr/web/routers/settings.py
src/artifice_ocr/web/routers/tropy.py
src/artifice_ocr/web/static/byom-preview.html
src/artifice_ocr/web/static/css/app.css
src/artifice_ocr/web/static/js/analytics.js
src/artifice_ocr/web/static/js/app.js
src/artifice_ocr/web/static/js/find_replace.js
src/artifice_ocr/web/static/js/history.js
src/artifice_ocr/web/static/js/icons.js
src/artifice_ocr/web/static/js/ludwiglang.js
src/artifice_ocr/web/static/js/palette.js
src/artifice_ocr/web/static/js/pdf_export.js
src/artifice_ocr/web/static/js/preview.js
src/artifice_ocr/web/static/js/preview_image.js
src/artifice_ocr/web/static/js/settings.js
src/artifice_ocr/web/static/js/toast.js
src/artifice_ocr/web/static/js/tropy.js
src/artifice_ocr/web/templates/about.html
src/artifice_ocr/web/templates/base.html
src/artifice_ocr/web/templates/index.html
tests/test_backend.py
tests/test_byom.py
tests/test_cli.py
tests/test_config_security.py
tests/test_diff.py
tests/test_export_ludwiglang.py
tests/test_guard.py
tests/test_history.py
tests/test_jobs.py
tests/test_normalise.py
tests/test_pdf_export.py
tests/test_translate.py
tests/test_tropy.py
tests/test_tropy_write.py
tests/test_web.py