Skip to content
Stefan Weil edited this page Aug 20, 2020 · 2 revisions

Minutes Open Tech Call 2020-08-20

New participants

New or upcoming features

API and OCR-D Butler

  • @j23d explains the general architecture and purpose of OCR-D Butler
    • HTTP/REST API to processors and sequences of processors ("chains")
    • Based on Python
      • Flask for the web interface
      • restx to define the API
      • Swagger to present the API
      • Celery as a task manager
    • Processors are executed with OCR-D/core run_cli method
  • OCR-D API should be showcased in a self-contained docker container for further discussion and easy testing
  • Focus on a convention for translating CLI calls to HTTP calls, with inspiration from OCR-D Butler

Workflow format

  • While individual processor steps can just be executed in sequence from a shell script, a proper workflow format has many advantages
    • Validation of input/output file groups
    • Ensure executables are installed
    • Validate parameters
    • Check quality of intermediate steps
    • Compose workflows from templates
    • ...
  • OCR-D currently recommends two workflow engines:
  • We need an exchange format for workflows that should be (among other):
    • convertible to ocrd process, workflow-configuration Makefiles, OCR-D Butler chains...
    • simple to write manually
    • syntactically straightforward enough to support GUIs for editing them
    • able to express both simple static workflows yet be flexible enough to support upcoming quality assurance extensions
    • allows composition/inheritance
    • be parameterizable itself (i.e. should support variables and override mechanisms)
    • easy to integrate into the API
  • We created a first draft of a spec for such a format, called OCRD-WF
    • Syntactically based on POSIX sh (i.e. shell script, a tiny subset of bash/zsh)
    • Supports variable assignments
      • But no agreement on the semantics and mechanics of variable assignments yet
    • Workflow steps are expressed in the same format as is used on the command-line
  • Discussion
    • How important is dynamic processing?
      • If non-global scope is required (i.e. variables can change their value throughout the script), is shell script a good foundation?
      • Would it make sense to use a proper workflow configuration language like CWL?
      • Should quality assurance be a feature of the language, e.g. offering metrics in special variables?
      • Do we need real conditionals or just "good enough vs. not good enough" checks that could be implemented as processors?

Welcome to the OCR-D wiki, a companion to the OCR-D website.

Articles and tutorials
Discussions
Expert section on OCR-D- workflows
Particular workflow steps
Recommended workflows
Workflow Guide
Videos
Section on Ground Truth
Clone this wiki locally