diff --git a/Makefile b/Makefile
index 18539e3d1d6b8f5ef60956b7d440e00ef0e00df0..3eae1273469ab4fc89a4a3011c0cc55bd8145104 100644
--- a/Makefile
+++ b/Makefile
@@ -1,2 +1,2 @@
 repos.json:
-	ocrd-kwalitee json -a > "$@"
+	ocrd-kwalitee json > "$@"
diff --git a/repos.json b/repos.json
index e7d476e7a641c825a77fc21397c7aa3687bb6838..0456e1f5dea3b02241486998e9f2deded3907f38 100644
--- a/repos.json
+++ b/repos.json
@@ -7,9 +7,9 @@
             "setup.py": "# -*- coding: utf-8 -*-\n\"\"\"\nInstalls:\n    - cor-asv-ann-train\n    - cor-asv-ann-eval\n    - cor-asv-ann-repl\n    - ocrd-cor-asv-ann-process\n    - ocrd-cor-asv-ann-evaluate\n\"\"\"\nimport codecs\n\nfrom setuptools import setup, find_packages\n\ninstall_requires = open('requirements.txt').read().split('\\n')\n\nwith codecs.open('README.md', encoding='utf-8') as f:\n    README = f.read()\n\nsetup(\n    name='ocrd_cor_asv_ann',\n    version='0.1.1',\n    description='sequence-to-sequence translator for noisy channel error correction',\n    long_description=README,\n    author='Robert Sachunsky',\n    author_email='sachunsky@informatik.uni-leipzig.de',\n    url='https://github.com/ASVLeipzig/cor-asv-ann',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=install_requires,\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'cor-asv-ann-train=ocrd_cor_asv_ann.scripts.train:cli',\n            'cor-asv-ann-eval=ocrd_cor_asv_ann.scripts.eval:cli',\n            'cor-asv-ann-repl=ocrd_cor_asv_ann.scripts.repl:cli',\n            'ocrd-cor-asv-ann-process=ocrd_cor_asv_ann.wrapper.cli:ocrd_cor_asv_ann_process',\n            'ocrd-cor-asv-ann-evaluate=ocrd_cor_asv_ann.wrapper.cli:ocrd_cor_asv_ann_evaluate',\n        ]\n    },\n)\n"
         },
         "git": {
-            "last_commit": "Tue Oct 22 11:23:54 2019 +0200",
+            "last_commit": "Sat Oct 26 00:13:18 2019 +0200",
             "latest_tag": "",
-            "number_of_commits": "37",
+            "number_of_commits": "38",
             "url": "https://github.com/ASVLeipzig/cor-asv-ann.git"
         },
         "name": "cor-asv-ann",
@@ -124,15 +124,15 @@
     },
     {
         "files": {
-            "Dockerfile": null,
-            "README.md": "# ocrd_calamari\n\nRecognize text using [Calamari OCR](https://github.com/Calamari-OCR/calamari).\n\nIntroduction\n-------------\n\nThis offers a OCR-D compliant workspace processor for some of the functionality of Calamari OCR.\n\nThis processor only operates on the text line level and so needs a line segmentation (and by extension a binarized \nimage) as its input.\n\nExample Usage\n-------------\n\n~~~\nocrd-calamari-recognize -p test-parameters.json -m mets.xml -I OCR-D-SEG-LINE -O OCR-D-OCR-CALAMARI\n~~~\n\nWith `test-parameters.json`:\n~~~\n{\n    \"checkpoint\": \"/path/to/some/trained/models/*.ckpt.json\"\n}\n~~~\n\nTODO\n----\n\n* Support Calamari's \"extended prediction data\" output\n* Currently, the processor only supports a prediction using confidence voting of multiple models. While this is\n  superior, it makes sense to support single model prediction, too.\n",
+            "Dockerfile": "FROM ocrd/core:edge\nMAINTAINER OCR-D\nENV DEBIAN_FRONTEND noninteractive\nENV PYTHONIOENCODING utf8\nENV LC_ALL C.UTF-8\nENV LANG C.UTF-8\n\nWORKDIR /build\nCOPY Makefile .\nCOPY setup.py .\nCOPY ocrd-tool.json .\nCOPY requirements.txt .\nCOPY ocrd_calamari ocrd_calamari\n\nRUN make calamari/build\nRUN pip3 install .\n\nENTRYPOINT [\"/usr/local/bin/ocrd-calamari-recognize\"]\n\n",
+            "README.md": "# ocrd_calamari\n\nRecognize text using [Calamari OCR](https://github.com/Calamari-OCR/calamari).\n\n## Introduction\n\nThis offers a OCR-D compliant workspace processor for some of the functionality of Calamari OCR.\n\nThis processor only operates on the text line level and so needs a line segmentation (and by extension a binarized \nimage) as its input.\n\n## Example Usage\n\n```sh\nocrd-calamari-recognize -p test-parameters.json -m mets.xml -I OCR-D-SEG-LINE -O OCR-D-OCR-CALAMARI\n```\n\nWith `test-parameters.json`:\n\n```json\n{\n    \"checkpoint\": \"/path/to/some/trained/models/*.ckpt.json\"\n}\n```\n\nTODO\n----\n\n* Support Calamari's \"extended prediction data\" output\n* Currently, the processor only supports a prediction using confidence voting of multiple models. While this is\n  superior, it makes sense to support single model prediction, too.\n",
             "ocrd-tool.json": "{\n  \"git_url\": \"https://github.com/kba/ocrd_calamari\",\n  \"version\": \"0.0.1\",\n  \"tools\": {\n    \"ocrd-calamari-recognize\": {\n      \"executable\": \"ocrd-calamari-recognize\",\n      \"categories\": [\n        \"Text recognition and optimization\"\n      ],\n      \"steps\": [\n        \"recognition/text-recognition\"\n      ],\n      \"description\": \"Recognize lines with Calamari\",\n      \"input_file_grp\": [\n        \"OCR-D-SEG-LINE\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-OCR-CALAMARI\"\n      ],\n      \"parameters\": {\n        \"checkpoint\": {\"type\": \"string\", \"format\": \"file\", \"cacheable\": true},\n        \"voter\": {\"type\": \"string\", \"default\": \"confidence_voter_default_ctc\"}\n      }\n    }\n  }\n}\n",
-            "setup.py": "# -*- coding: utf-8 -*-\nimport codecs\n\nfrom setuptools import setup, find_packages\n\nsetup(\n    name='ocrd_calamari',\n    version='0.0.1',\n    description='Calamari bindings',\n    long_description=codecs.open('README.md', encoding='utf-8').read(),\n    author='Konstantin Baierer, Mike Gerber',\n    author_email='unixprog@gmail.com, mike.gerber@sbb.spk-berlin.de',\n    url='https://github.com/kba/ocrd_calamari',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=open('requirements.txt').read().split('\\n'),\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'ocrd-calamari-recognize=ocrd_calamari.cli:ocrd_calamari_recognize',\n        ]\n    },\n)\n"
+            "setup.py": "# -*- coding: utf-8 -*-\nfrom pathlib import Path\n\nfrom setuptools import setup, find_packages\n\nsetup(\n    name='ocrd_calamari',\n    version='0.0.1',\n    description='Calamari bindings',\n    long_description=Path('README.md').read_text(),\n    long_description_content_type='text/markdown',\n    author='Konstantin Baierer, Mike Gerber',\n    author_email='unixprog@gmail.com, mike.gerber@sbb.spk-berlin.de',\n    url='https://github.com/kba/ocrd_calamari',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=Path('requirements.txt').read_text().split('\\n'),\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'ocrd-calamari-recognize=ocrd_calamari.cli:ocrd_calamari_recognize',\n        ]\n    },\n)\n"
         },
         "git": {
-            "last_commit": "Fri Sep 27 15:52:03 2019 +0200",
+            "last_commit": "Thu Oct 31 17:28:36 2019 +0100",
             "latest_tag": "",
-            "number_of_commits": "24",
+            "number_of_commits": "29",
             "url": "https://github.com/OCR-D/ocrd_calamari.git"
         },
         "name": "ocrd_calamari",
@@ -302,15 +302,15 @@
     },
     {
         "files": {
-            "Dockerfile": null,
-            "README.md": "# ocrd_imageconvert/\n\n> Thin wrapper around convert(1)\n\nRequires: ocrd >= 0.4.2\n\n## What it does\n\n```sh\n\n# Actual conversion\nconvert \"$infile\" \"$outfile\"\n```\n\n## What it could do\n\n[One or more of these](http://www.fmwconcepts.com/imagemagick/textcleaner/index.php) or\n[these](http://web.archive.org/web/20110517204536/http://www.ict.griffith.edu.au/anthony/graphics/imagick6/quantize/)\nor convert to grayscale, binarize etc. With threshold configurable as a\nparameter.\n",
-            "ocrd-tool.json": "{\n  \"git_url\": \"https://github.com/OCR-D/ocrd_im6convert\",\n  \"version\": \"0.0.1\",\n  \"tools\": {\n\n    \"ocrd-im6convert\": {\n      \"executable\": \"ocrd-im6convert\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/binarization\"],\n      \"description\": \"Convert and transform images \",\n      \"parameters\": {\n        \"output-format\": {\n          \"type\": \"string\",\n          \"required\": true,\n          \"enum\": [\"image/tiff\", \"image/jp2\", \"image/png\"]\n        }\n      }\n    }\n\n  }\n}\n",
+            "Dockerfile": "FROM ocrd/core:edge\nMAINTAINER OCR-D\nENV DEBIAN_FRONTEND noninteractive\n\nWORKDIR /build\nCOPY ocrd-im6convert .\nCOPY ocrd-tool.json .\nCOPY Makefile .\n\nRUN apt-get update && \\\n    apt-get -y install --no-install-recommends \\\n    ca-certificates \\\n    make \\\n    imagemagick\n\nRUN make install PREFIX=/usr/local\n\nENTRYPOINT [\"/usr/local/bin/ocrd-im6convert\"]\n",
+            "README.md": "# ocrd_imageconvert/\n\n> Thin wrapper around convert(1)\n\n## Introduction\n\n```sh\n# Actual conversion\nconvert \"$infile\" \"$outfile\"\n```\n### What it could do\n\n[One or more of these](http://www.fmwconcepts.com/imagemagick/textcleaner/index.php) or\n[these](http://web.archive.org/web/20110517204536/http://www.ict.griffith.edu.au/anthony/graphics/imagick6/quantize/)\nor convert to grayscale, binarize etc. With threshold configurable as a\nparameter.\n\n## Installation\n\n```\nmake install\n```\n\n## Usage\n...\n\n## Testing\n\nNone yet\n",
+            "ocrd-tool.json": "{\n  \"git_url\": \"https://github.com/OCR-D/ocrd_im6convert\",\n  \"version\": \"0.0.1\",\n  \"tools\": {\n\n    \"ocrd-im6convert\": {\n      \"executable\": \"ocrd-im6convert\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization\"],\n      \"description\": \"Convert and transform images\",\n      \"input_file_grp\": [\n        \"OCR-D-IMG\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-IMG\"\n      ],\n      \"parameters\": {\n        \"output-format\": {\n          \"type\": \"string\",\n          \"description\": \"Desired media type of output\",\n          \"required\": true,\n          \"enum\": [\"image/tiff\", \"image/jp2\", \"image/png\"]\n        }\n      }\n    }\n\n  }\n}\n",
             "setup.py": null
         },
         "git": {
-            "last_commit": "Tue Jun 26 18:30:04 2018 +0200",
+            "last_commit": "Sat Oct 26 22:02:16 2019 +0200",
             "latest_tag": "",
-            "number_of_commits": "5",
+            "number_of_commits": "18",
             "url": "https://github.com/OCR-D/ocrd_im6convert"
         },
         "name": "ocrd_im6convert",
@@ -321,10 +321,17 @@
                     "categories": [
                         "Image preprocessing"
                     ],
-                    "description": "Convert and transform images ",
+                    "description": "Convert and transform images",
                     "executable": "ocrd-im6convert",
+                    "input_file_grp": [
+                        "OCR-D-IMG"
+                    ],
+                    "output_file_grp": [
+                        "OCR-D-IMG"
+                    ],
                     "parameters": {
                         "output-format": {
+                            "description": "Desired media type of output",
                             "enum": [
                                 "image/tiff",
                                 "image/jp2",
@@ -335,13 +342,13 @@
                         }
                     },
                     "steps": [
-                        "preprocessing/optimization/binarization"
+                        "preprocessing/optimization"
                     ]
                 }
             },
             "version": "0.0.1"
         },
-        "ocrd_tool_validate": "<report valid=\"false\">\n  <error>[tools.ocrd-im6convert] 'input_file_grp' is a required property</error>\n  <error>[tools.ocrd-im6convert.parameters.output-format] 'description' is a required property</error>\n</report>",
+        "ocrd_tool_validate": "<report valid=\"true\">\n</report>",
         "official": false,
         "org_plus_name": "OCR-D/ocrd_im6convert",
         "url": "https://github.com/OCR-D/ocrd_im6convert"
@@ -351,12 +358,12 @@
             "Dockerfile": null,
             "README.md": "# ocrd_keraslm\n    character-level language modelling using Keras\n\n\n## Introduction\n\nThis is a tool for statistical _language modelling_ (predicting text from context) with recurrent neural networks. It models probabilities not on the word level but the _character level_ so as to allow open vocabulary processing (avoiding morphology, historic orthography and word segmentation problems). It manages a vocabulary of mapped characters, which can be easily extended by training on more text. Above that, unmapped characters are treated with underspecification.\n\nIn addition to character sequences, (meta-data) context variables can be configured as extra input. \n\n### Architecture\n\nThe model consists of:\n\n0. an input layer: characters are represented as indexes from the vocabulary mapping, in windows of a number `length` of characters,\n1. a character embedding layer: window sequences are converted into dense vectors by looking up the indexes in an embedding weight matrix,\n2. a context embedding layer: context variables are converted into dense vectors by looking up the indexes in an embedding weight matrix, \n3. character and context vector sequences are concatenated,\n4. a number `depth` of hidden layers: each with a number `width` of hidden recurrent units of _LSTM cells_ (Long Short-term Memory) connected on top of each other,\n5. an output layer derived from the transposed character embedding matrix (weight tying): hidden activations are projected linearly to vectors of dimensionality equal to the character vocabulary size, then softmax is applied returning a probability for each possible value of the next character, respectively.\n\n![model graph depiction](model-graph.png \"graph with 1 context variable\")\n\nThe model is trained by feeding windows of text in index representation to the input layer, calculating output and comparing it to the same text shifted backward by 1 character, and represented as unit vectors (\"one-hot coding\") as target. The loss is calculated as the (unweighted) cross-entropy between target and output. Backpropagation yields error gradients for each layer, which is used to iteratively update the weights (stochastic gradient descent).\n\nThis is implemented in [Keras](https://keras.io) with [Tensorflow](https://www.tensorflow.org/) as backend. It automatically uses a fast CUDA-optimized LSTM implementation (Nividia GPU and Tensorflow installation with GPU support, see below), both in learning and in prediction phase, if available.\n\n\n### Modes of operation\n\nNotably, this model (by default) runs _statefully_, i.e. by implicitly passing hidden state from one window (batch of samples) to the next. That way, the context available for predictions can be arbitrarily long (above `length`, e.g. the complete document up to that point), or short (below `length`, e.g. at the start of a text). (However, this is a passive perspective above `length`, because errors are never back-propagated any further in time during gradient-descent training.) This is favourable to stateless mode because all characters can be output in parallel, and no partial windows need to be presented during training (which slows down).\n\nBesides stateful mode, the model can also be run _incrementally_, i.e. by explicitly passing hidden state from the caller. That way, multiple alternative hypotheses can be processed together. This is used for generation (sampling from the model) and alternative decoding (finding the best path through a sequence of alternatives).\n\n### Context conditioning\n\nEvery text has meta-data like time, author, text type, genre, production features (e.g. print vs typewriter vs digital born rich text, OCR version), language, structural element (e.g. title vs heading vs paragraph vs footer vs marginalia), font family (e.g. Antiqua vs Fraktura) and font shape (e.g. bold vs letter-spaced vs italic vs normal) etc. \n\nThis information (however noisy) can be very useful to facilitate stochastic modelling, since language has an extreme diversity and complexity. To that end, models can be conditioned on extra inputs here, termed _context variables_. The model learns to represent these high-dimensional discrete values as low-dimensional continuous vectors (embeddings), also entering the recurrent hidden layers (as a form of simple additive adaptation).\n\n### Underspecification\n\nIndex zero is reserved for unmapped characters (unseen contexts). During training, its embedding vector is regularised to occupy a center position of all mapped characters (all other contexts), and the hidden layers get to see it every now and then by random degradation. At runtime, therefore, some unknown character (some unknown context) represented as zero does not disturb follow-up predictions too much.\n\n\n## Installation\n\nRequired Ubuntu packages:\n\n* Python (``python`` or ``python3``)\n* pip (``python-pip`` or ``python3-pip``)\n* virtualenv (``python-virtualenv`` or ``python3-virtualenv``)\n\nCreate and activate a virtualenv as usual.\n\nIf you need a custom version of ``keras`` or ``tensorflow`` (like [GPU support](https://www.tensorflow.org/install/install_sources)), install them via `pip` now.\n\nTo install Python dependencies and this module, then do:\n```shell\nmake deps install\n```\nWhich is the equivalent of:\n```shell\npip install -r requirements.txt\npip install -e .\n```\n\nUseful environment variables are:\n- ``TF_CPP_MIN_LOG_LEVEL`` (set to `1` to suppress most of Tensorflow's messages\n- ``CUDA_VISIBLE_DEVICES`` (set empty to force CPU even in a GPU installation)\n\n\n## Usage\n\nThis packages has two user interfaces:\n\n### command line interface `keraslm-rate`\n\nTo be used with string arguments and plain-text files.\n\n```shell\nUsage: keraslm-rate [OPTIONS] COMMAND [ARGS]...\n\nOptions:\n  --help  Show this message and exit.\n\nCommands:\n  train                           train a language model\n  test                            get overall perplexity from language model\n  apply                           get individual probabilities from language model\n  generate                        sample characters from language model\n  print-charset                   Print the mapped characters\n  prune-charset                   Delete one character from mapping\n  plot-char-embeddings-similarity\n                                  Paint a heat map of character embeddings\n  plot-context-embeddings-similarity\n                                  Paint a heat map of context embeddings\n  plot-context-embeddings-projection\n                                  Paint a 2-d PCA projection of context embeddings\n```\n\nExamples:\n```shell\nkeraslm-rate train --width 64 --depth 4 --length 256 --model model_dta_64_4_256.h5 dta_komplett_2017-09-01/txt/*.tcf.txt\nkeraslm-rate generate -m model_dta_64_4_256.h5 --number 6 \"f\u00fcr die Wi\u017f\u017fen\"\nkeraslm-rate apply -m model_dta_64_4_256.h5 \"so sch\u00e4dlich ist es Borkickheile zu pflanzen\"\nkeraslm-rate test -m model_dta_64_4_256.h5 dta_komplett_2017-09-01/txt/grimm_*.tcf.txt\n```\n\n### [OCR-D processor](https://github.com/OCR-D/core) interface `ocrd-keraslm-rate`\n\nTo be used with [PageXML](https://www.primaresearch.org/tools/PAGELibraries) documents in an [OCR-D](https://github.com/OCR-D/spec/) annotation workflow. Input could be anything with a textual annotation (`TextEquiv` on the given `textequiv_level`). The LM rater could be used for both quality control (without alternative decoding, using only each first index `TextEquiv`) and part of post-correction (with `alternative_decoding=True`, finding the best path among `TextEquiv` indexes).\n\n```json\n  \"tools\": {\n    \"ocrd-keraslm-rate\": {\n      \"executable\": \"ocrd-keraslm-rate\",\n      \"categories\": [\n        \"Text recognition and optimization\"\n      ],\n      \"steps\": [\n        \"recognition/text-recognition\"\n      ],\n      \"description\": \"Rate elements of the text with a character-level LSTM language model in Keras\",\n      \"input_file_grp\": [\n        \"OCR-D-OCR-TESS\",\n        \"OCR-D-OCR-KRAK\",\n        \"OCR-D-OCR-OCRO\",\n        \"OCR-D-OCR-CALA\",\n        \"OCR-D-OCR-ANY\",\n        \"OCR-D-COR-CIS\",\n        \"OCR-D-COR-ASV\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-COR-LM\"\n      ],\n      \"parameters\": {\n        \"model_file\": {\n          \"type\": \"string\",\n          \"format\": \"uri\",\n          \"content-type\": \"application/x-hdf;subtype=bag\",\n          \"description\": \"path of h5py weight/config file for model trained with keraslm\",\n          \"required\": true,\n          \"cacheable\": true\n        },\n        \"textequiv_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"region\", \"line\", \"word\", \"glyph\"],\n          \"default\": \"glyph\",\n          \"description\": \"PAGE XML hierarchy level to evaluate TextEquiv sequences on\"\n        },\n        \"alternative_decoding\": {\n          \"type\": \"boolean\",\n          \"description\": \"whether to process all TextEquiv alternatives, finding the best path via beam search, and delete each non-best alternative\",\n          \"default\": true\n        },\n        \"beam_width\": {\n          \"type\": \"number\",\n          \"format\": \"integer\",\n          \"description\": \"maximum number of best partial paths to consider during search with alternative_decoding\",\n          \"default\": 100\n        }\n      }\n    }\n  }\n```\n\nExamples:\n```shell\nmake deps-test # installs ocrd_tesserocr\nmake test/assets # downloads GT, imports PageXML, builds workspaces\nocrd workspace clone -a test/assets/kant_aufklaerung_1784/mets.xml ws1\ncd ws1\nocrd-tesserocr-segment-region -I OCR-D-IMG -O OCR-D-SEG-BLOCK\nocrd-tesserocr-segment-line -I OCR-D-SEG-BLOCK -O OCR-D-SEG-LINE\nocrd-tesserocr-recognize -I OCR-D-SEG-LINE -O OCR-D-OCR-TESS-WORD -p '{ \"textequiv_level\" : \"word\", \"model\" : \"Fraktur\" }'\nocrd-tesserocr-recognize -I OCR-D-SEG-LINE -O OCR-D-OCR-TESS-GLYPH -p '{ \"textequiv_level\" : \"glyph\", \"model\" : \"deu-frak\" }'\n# get confidences and perplexity:\nocrd-keraslm-rate -I OCR-D-OCR-TESS-WORD -O OCR-D-OCR-LM-WORD -p '{ \"model_file\": \"model_dta_64_4_256.h5\", \"textequiv_level\": \"word\", \"alternative_decoding\": false }'\n# also get best path:\nocrd-keraslm-rate -I OCR-D-OCR-TESS-GLYPH -O OCR-D-OCR-LM-GLYPH -p '{ \"model_file\": \"model_dta_64_4_256.h5\", \"textequiv_level\": \"glyph\", \"alternative_decoding\": true, \"beam_width\": 10 }'\n```\n\n## Testing\n\n```shell\nmake deps-test test\n```\nWhich is the equivalent of:\n```shell\npip install -r requirements_test.txt\ntest -e test/assets || test/prepare_gt.bash test/assets\ntest -f model_dta_test.h5 || keraslm-rate train -m model_dta_test.h5 test/assets/*.txt\nkeraslm-rate test -m model_dta_test.h5 test/assets/*.txt\npython -m pytest test $(PYTEST_ARGS)\n```\n\nSet `PYTEST_ARGS=\"-s --verbose\"` to see log output (`-s`) and individual test results (`--verbose`).\n",
             "ocrd-tool.json": "{\n  \"git_url\": \"https://github.com/OCR-D/ocrd_keraslm\",\n  \"version\": \"0.3.1\",\n  \"tools\": {\n    \"ocrd-keraslm-rate\": {\n      \"executable\": \"ocrd-keraslm-rate\",\n      \"categories\": [\n        \"Text recognition and optimization\"\n      ],\n      \"steps\": [\n        \"recognition/text-recognition\"\n      ],\n      \"description\": \"Rate elements of the text with a character-level LSTM language model in Keras\",\n      \"input_file_grp\": [\n        \"OCR-D-OCR-TESS\",\n        \"OCR-D-OCR-KRAK\",\n        \"OCR-D-OCR-OCRO\",\n        \"OCR-D-OCR-CALA\",\n        \"OCR-D-OCR-ANY\",\n        \"OCR-D-COR-CIS\",\n        \"OCR-D-COR-ASV\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-COR-LM\"\n      ],\n      \"parameters\": {\n        \"model_file\": {\n          \"type\": \"string\",\n          \"format\": \"uri\",\n          \"content-type\": \"application/x-hdf;subtype=bag\",\n          \"description\": \"path of h5py weight/config file for model trained with keraslm\",\n          \"required\": true,\n          \"cacheable\": true\n        },\n        \"textequiv_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"region\", \"line\", \"word\", \"glyph\"],\n          \"default\": \"glyph\",\n          \"description\": \"PAGE XML hierarchy level to evaluate TextEquiv sequences on\"\n        },\n        \"alternative_decoding\": {\n          \"type\": \"boolean\",\n          \"description\": \"whether to process all TextEquiv alternatives, finding the best path via beam search, and delete each non-best alternative\",\n          \"default\": true\n        },\n        \"beam_width\": {\n          \"type\": \"number\",\n          \"format\": \"integer\",\n          \"description\": \"maximum number of best partial paths to consider during search with alternative_decoding\",\n          \"default\": 10\n        },\n        \"lm_weight\": {\n          \"type\": \"number\",\n          \"format\": \"float\",\n          \"description\": \"share of the LM scores over the input confidences\",\n          \"default\": 0.5\n        }\n      }\n    }\n  }\n}\n",
-            "setup.py": "# -*- coding: utf-8 -*-\n\"\"\"\nInstalls:\n    - keraslm-rate\n    - ocrd-keraslm-rate\n\"\"\"\nimport codecs\n\nfrom setuptools import setup, find_packages\n\nwith codecs.open('README.md', encoding='utf-8') as f:\n    README = f.read()\n\nsetup(\n    name='ocrd_keraslm',\n    version='0.3.1',\n    description='character-level language modelling in Keras',\n    long_description=README,\n    author='Konstantin Baierer, Kay-Michael W\u00fcrzner',\n    author_email='unixprog@gmail.com, wuerzner@gmail.com',\n    url='https://github.com/OCR-D/ocrd_keraslm',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=open('requirements.txt').read().split('\\n'),\n    extras_require={\n        'plotting': [\n            'sklearn',\n            'matplotlib',\n            ]\n    },\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'keraslm-rate=ocrd_keraslm.scripts.run:cli',\n            'ocrd-keraslm-rate=ocrd_keraslm.wrapper.cli:ocrd_keraslm_rate',\n        ]\n    },\n)\n"
+            "setup.py": "# -*- coding: utf-8 -*-\n\"\"\"\nInstalls:\n    - keraslm-rate\n    - ocrd-keraslm-rate\n\"\"\"\nimport codecs\n\nfrom setuptools import setup, find_packages\n\nwith codecs.open('README.md', encoding='utf-8') as f:\n    README = f.read()\n\nsetup(\n    name='ocrd_keraslm',\n    version='0.3.1',\n    description='character-level language modelling in Keras',\n    long_description=README,\n    long_description_content_type='text/markdown',\n    author='Robert Sachunsky, Konstantin Baierer, Kay-Michael W\u00fcrzner',\n    author_email='sachunsky@informatik.uni-leipzig.de, unixprog@gmail.com, wuerzner@gmail.com',\n    url='https://github.com/OCR-D/ocrd_keraslm',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=open('requirements.txt').read().split('\\n'),\n    extras_require={\n        'plotting': [\n            'sklearn',\n            'matplotlib',\n            ]\n    },\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'keraslm-rate=ocrd_keraslm.scripts.run:cli',\n            'ocrd-keraslm-rate=ocrd_keraslm.wrapper.cli:ocrd_keraslm_rate',\n        ]\n    },\n)\n"
         },
         "git": {
-            "last_commit": "Tue Oct 22 11:25:28 2019 +0200",
-            "latest_tag": "",
-            "number_of_commits": "81",
+            "last_commit": "Sat Oct 26 01:06:39 2019 +0200",
+            "latest_tag": "0.3.1",
+            "number_of_commits": "84",
             "url": "https://github.com/OCR-D/ocrd_keraslm.git"
         },
         "name": "ocrd_keraslm",
@@ -430,8 +437,8 @@
         "official": false,
         "org_plus_name": "OCR-D/ocrd_keraslm",
         "python": {
-            "author": "Konstantin Baierer, Kay-Michael W\u00fcrzner",
-            "author-email": "unixprog@gmail.com, wuerzner@gmail.com",
+            "author": "Robert Sachunsky, Konstantin Baierer, Kay-Michael W\u00fcrzner",
+            "author-email": "sachunsky@informatik.uni-leipzig.de, unixprog@gmail.com, wuerzner@gmail.com",
             "name": "ocrd_keraslm",
             "pypi": {
                 "info": {
@@ -1276,13 +1283,13 @@
         "files": {
             "Dockerfile": null,
             "README.md": "# ocrd_segment\n\nThis repository aims to provide a number of OCR-D-compliant processors for layout analysis and evaluation.\n\n  - pattern-based segmentation aka. `ocrd-segment-via-template` (input file groups N=1, based on a PAGE template, e.g. from Aletheia, and some XSLT or Python to apply it to the input file group)\n  - data-driven segmentation aka. `ocrd-segment-via-model` (input file groups N=1, based on a statistical model, e.g. Neural Network)\n  - comparing different layout segmentations aka. `ocrd-segment-evaluate` (input file groups N = 2, compute the distance between two segmentations, e.g. automatic vs. manual)\n  - repairing of layout segmentations aka. `ocrd-segment-repair` (input file groups N >= 1, based on heuristics implemented using Shapely)\n",
-            "ocrd-tool.json": "{\n  \"version\": \"0.0.1\",\n  \"git_url\": \"https://github.com/OCR-D/ocrd_segment\",\n  \"tools\": {\n    \"ocrd-segment-repair\": {\n      \"executable\": \"ocrd-segment-repair\",\n      \"categories\": [\"Layout analysis\"],\n      \"description\": \"Analyse and repair region segmentation\",\n      \"input_file_grp\": [\n        \"OCR-D-IMG\",\n        \"OCR-D-SEG-BLOCK\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-EVAL-BLOCK\"\n      ],\n      \"steps\": [\"layout/segmentation/region\"],\n      \"parameters\": {\n        \"sanitize\": {\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"Shrink and/or expand a region in such a way that it coordinates include those of all its lines\"\n        },\n        \"plausibilize\": {\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"Modify the region segmentation to make it (more) plausible\"\n        }\n      }\n    },\n    \"ocrd-segment-evaluate\": {\n      \"executable\": \"ocrd-segment-evaluate\",\n      \"categories\": [\"Layout analysis\"],\n      \"description\": \"Compare region segmentations\",\n      \"input_file_grp\": [\n        \"OCR-D-GT-SEG-BLOCK\",\n        \"OCR-D-SEG-BLOCK\"\n      ],\n      \"steps\": [\"layout/analysis\"],\n      \"parameters\": {\n      }\n    }\n  }\n}\n",
-            "setup.py": "# -*- coding: utf-8 -*-\n\"\"\"\nInstalls:\n\n    - ocrd-segment-repair\n    - ocrd-segment-evaluate\n\"\"\"\nimport codecs\n\nfrom setuptools import setup, find_packages\n\nsetup(\n    name='ocrd_segment',\n    version='0.0.2',\n    description='Page segmentation and segmentation evaluation',\n    long_description=codecs.open('README.md', encoding='utf-8').read(),\n    author='Konstantin Baierer, Kay-Michael W\u00fcrzner, Robert Sachunsky',\n    author_email='unixprog@gmail.com, wuerzner@gmail.com, sachunsky@informatik.uni-leipzig.de',\n    url='https://github.com/OCR-D/ocrd_segment',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=open('requirements.txt').read().split('\\n'),\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'ocrd-segment-repair=ocrd_segment.cli:ocrd_segment_repair',\n            'ocrd-segment-evaluate=ocrd_segment.cli:ocrd_segment_evaluate',\n        ]\n    },\n)\n"
+            "ocrd-tool.json": "{\n  \"version\": \"0.0.1\",\n  \"git_url\": \"https://github.com/OCR-D/ocrd_segment\",\n  \"tools\": {\n    \"ocrd-segment-repair\": {\n      \"executable\": \"ocrd-segment-repair\",\n      \"categories\": [\"Layout analysis\"],\n      \"description\": \"Analyse and repair region segmentation\",\n      \"input_file_grp\": [\n        \"OCR-D-IMG\",\n        \"OCR-D-SEG-BLOCK\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-EVAL-BLOCK\"\n      ],\n      \"steps\": [\"layout/segmentation/region\"],\n      \"parameters\": {\n        \"sanitize\": {\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"Shrink and/or expand a region in such a way that it coordinates include those of all its lines\"\n        },\n        \"plausibilize\": {\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"Modify the region segmentation to make it (more) plausible\"\n        }\n      }\n    },\n    \"ocrd-segment-extract-regions\": {\n      \"executable\": \"ocrd-segment-extract-regions\",\n      \"categories\": [\"Image preprocessing\"],\n      \"description\": \"Extract region segmentation as image+JSON\",\n      \"input_file_grp\": [\n        \"OCR-D-SEG-BLOCK\",\n        \"OCR-D-GT-SEG-BLOCK\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-IMG-CROP\"\n      ],\n      \"steps\": [\"layout/analysis\"],\n      \"parameters\": {\n        \"transparency\": {\n          \"type\": \"boolean\",\n          \"default\": true,\n          \"description\": \"Add alpha channels with segment masks to the images\"\n        }\n      }\n    },\n    \"ocrd-segment-extract-lines\": {\n      \"executable\": \"ocrd-segment-extract-lines\",\n      \"categories\": [\"Image preprocessing\"],\n      \"description\": \"Extract line segmentation as image+txt+JSON\",\n      \"input_file_grp\": [\n        \"OCR-D-SEG-LINE\",\n        \"OCR-D-GT-SEG-LINE\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-IMG-CROP\"\n      ],\n      \"steps\": [\"layout/analysis\"],\n      \"parameters\": {\n        \"transparency\": {\n          \"type\": \"boolean\",\n          \"default\": true,\n          \"description\": \"Add alpha channels with segment masks to the images\"\n        }\n      }\n    },\n    \"ocrd-segment-evaluate\": {\n      \"executable\": \"ocrd-segment-evaluate\",\n      \"categories\": [\"Layout analysis\"],\n      \"description\": \"Compare region segmentations\",\n      \"input_file_grp\": [\n        \"OCR-D-GT-SEG-BLOCK\",\n        \"OCR-D-SEG-BLOCK\"\n      ],\n      \"steps\": [\"layout/analysis\"],\n      \"parameters\": {\n      }\n    }\n  }\n}\n",
+            "setup.py": "# -*- coding: utf-8 -*-\n\"\"\"\nInstalls:\n\n    - ocrd-segment-repair\n    - ocrd-segment-extract-regions\n    - ocrd-segment-extract-lines\n    - ocrd-segment-evaluate\n\"\"\"\nimport codecs\n\nfrom setuptools import setup, find_packages\n\nsetup(\n    name='ocrd_segment',\n    version='0.0.2',\n    description='Page segmentation and segmentation evaluation',\n    long_description=codecs.open('README.md', encoding='utf-8').read(),\n    author='Konstantin Baierer, Kay-Michael W\u00fcrzner, Robert Sachunsky',\n    author_email='unixprog@gmail.com, wuerzner@gmail.com, sachunsky@informatik.uni-leipzig.de',\n    url='https://github.com/OCR-D/ocrd_segment',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=open('requirements.txt').read().split('\\n'),\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'ocrd-segment-repair=ocrd_segment.cli:ocrd_segment_repair',\n            'ocrd-segment-extract-regions=ocrd_segment.cli:ocrd_segment_extract_regions',\n            'ocrd-segment-extract-lines=ocrd_segment.cli:ocrd_segment_extract_lines',\n            'ocrd-segment-evaluate=ocrd_segment.cli:ocrd_segment_evaluate',\n        ]\n    },\n)\n"
         },
         "git": {
-            "last_commit": "Tue Sep 10 08:31:29 2019 +0200",
+            "last_commit": "Wed Oct 30 10:34:06 2019 +0100",
             "latest_tag": "",
-            "number_of_commits": "28",
+            "number_of_commits": "37",
             "url": "https://github.com/OCR-D/ocrd_segment.git"
         },
         "name": "ocrd_segment",
@@ -1304,6 +1311,54 @@
                         "layout/analysis"
                     ]
                 },
+                "ocrd-segment-extract-lines": {
+                    "categories": [
+                        "Image preprocessing"
+                    ],
+                    "description": "Extract line segmentation as image+txt+JSON",
+                    "executable": "ocrd-segment-extract-lines",
+                    "input_file_grp": [
+                        "OCR-D-SEG-LINE",
+                        "OCR-D-GT-SEG-LINE"
+                    ],
+                    "output_file_grp": [
+                        "OCR-D-IMG-CROP"
+                    ],
+                    "parameters": {
+                        "transparency": {
+                            "default": true,
+                            "description": "Add alpha channels with segment masks to the images",
+                            "type": "boolean"
+                        }
+                    },
+                    "steps": [
+                        "layout/analysis"
+                    ]
+                },
+                "ocrd-segment-extract-regions": {
+                    "categories": [
+                        "Image preprocessing"
+                    ],
+                    "description": "Extract region segmentation as image+JSON",
+                    "executable": "ocrd-segment-extract-regions",
+                    "input_file_grp": [
+                        "OCR-D-SEG-BLOCK",
+                        "OCR-D-GT-SEG-BLOCK"
+                    ],
+                    "output_file_grp": [
+                        "OCR-D-IMG-CROP"
+                    ],
+                    "parameters": {
+                        "transparency": {
+                            "default": true,
+                            "description": "Add alpha channels with segment masks to the images",
+                            "type": "boolean"
+                        }
+                    },
+                    "steps": [
+                        "layout/analysis"
+                    ]
+                },
                 "ocrd-segment-repair": {
                     "categories": [
                         "Layout analysis"
@@ -1350,15 +1405,15 @@
     },
     {
         "files": {
-            "Dockerfile": "FROM ocrd/core\nMAINTAINER OCR-D\nENV DEBIAN_FRONTEND noninteractive\nENV PYTHONIOENCODING utf8\nENV LC_ALL C.UTF-8\nENV LANG C.UTF-8\n\nWORKDIR /build-ocrd\nCOPY setup.py .\nCOPY requirements.txt .\nCOPY requirements_test.txt .\nCOPY README.rst .\nCOPY LICENSE .\nRUN apt-get update && \\\n    apt-get -y install --no-install-recommends \\\n    ca-certificates \\\n    make \\\n    git\nCOPY Makefile .\nRUN make deps-ubuntu\nCOPY ocrd_tesserocr ./ocrd_tesserocr\nRUN pip3 install --upgrade pip\nRUN make PYTHON=python3 PIP=pip3 deps install\nCOPY test ./test\nRUN make PYTHON=python3 PIP=pip3 deps-test\n\nENTRYPOINT [\"/bin/sh\", \"-c\"]\n",
-            "README.md": null,
+            "Dockerfile": "FROM ocrd/core\nMAINTAINER OCR-D\nENV DEBIAN_FRONTEND noninteractive\nENV PYTHONIOENCODING utf8\nENV LC_ALL C.UTF-8\nENV LANG C.UTF-8\n\nWORKDIR /build-ocrd\nCOPY setup.py .\nCOPY requirements.txt .\nCOPY requirements_test.txt .\nCOPY README.md .\nCOPY LICENSE .\nRUN apt-get update && \\\n    apt-get -y install --no-install-recommends \\\n    ca-certificates \\\n    make \\\n    git\nCOPY Makefile .\nRUN make deps-ubuntu\nCOPY ocrd_tesserocr ./ocrd_tesserocr\nRUN pip3 install --upgrade pip\nRUN make PYTHON=python3 PIP=pip3 deps install\nCOPY test ./test\nRUN make PYTHON=python3 PIP=pip3 deps-test\n\nENTRYPOINT [\"/bin/sh\", \"-c\"]\n",
+            "README.md": "# ocrd_tesserocr\n\n> Crop, deskew, segment into regions / lines / words, or recognize with tesserocr\n\n[![image](https://circleci.com/gh/OCR-D/ocrd_tesserocr.svg?style=svg)](https://circleci.com/gh/OCR-D/ocrd_tesserocr)\n[![image](https://img.shields.io/pypi/v/ocrd_tesserocr.svg)](https://pypi.org/project/ocrd_tesserocr/)\n[![image](https://codecov.io/gh/OCR-D/ocrd_tesserocr/branch/master/graph/badge.svg)](https://codecov.io/gh/OCR-D/ocrd_tesserocr)\n[![Docker Automated build](https://img.shields.io/docker/automated/ocrd/tesserocr.svg)](https://hub.docker.com/r/ocrd/tesserocr/tags/)\n\n## Introduction\n\nThis offers [OCR-D](https://ocr-d.github.io) compliant workspace processors for (much of) the functionality of [Tesseract](https://github.com/tesseract-ocr) via its Python API wrapper [tesserocr](https://github.com/sirfz/tesserocr) . (Each processor is a step in the OCR-D functional model, and can be replaced with an alternative implementation. Data is represented within METS/PAGE.)\n\nThis includes image preprocessing (cropping, binarization, deskewing), layout analysis (region, line, word segmentation) and OCR proper. Most processors can operate on different levels of the PAGE hierarchy, depending on the workflow configuration. Image results are referenced (read and written) via `AlternativeImage`, text results via `TextEquiv`, deskewing via `@orientation`, cropping via `Border` and segmentation via `Region` / `TextLine` / `Word` elements with `Coords/@points`.\n\n## Installation\n\nRequired ubuntu packages:\n\n- Tesseract headers (`libtesseract-dev`)\n- Some tesseract language models (`tesseract-ocr-{eng,deu,frk,...}` or script models (`tesseract-ocr-script-{latn,frak,...}`)\n- Leptonica headers (`libleptonica-dev`)\n\nRun:\n\n```sh\nmake deps-ubuntu # or manually\nmake deps # or pip install -r requirements\nmake install # or pip install .\n```\n\n## Usage\n\nSee docstrings and in the individual processors and [ocrd-tool.json](ocrd_tesserocr/ocrd-tool.json) descriptions.\n\nAvailable processors are:\n\n- [ocrd-tesserocr-crop](ocrd_tesserocr/crop.py)\n- [ocrd-tesserocr-deskew](ocrd_tesserocr/deskew.py)\n- [ocrd-tesserocr-binarize](ocrd_tesserocr/binarize.py)\n- [ocrd-tesserocr-segment-region](ocrd_tesserocr/segment_region.py)\n- [ocrd-tesserocr-segment-line](ocrd_tesserocr/segment_line.py)\n- [ocrd-tesserocr-segment-word](ocrd_tesserocr/segment_word.py)\n- [ocrd-tesserocr-recognize](ocrd_tesserocr/recognize.py)\n\n## Testing\n\n```sh\nmake test\n```\n\nThis downloads some test data from https://github.com/OCR-D/assets under `repo/assets`, and runs some basic test of the Python API as well as the CLIs.\n\nSet `PYTEST_ARGS=\"-s --verbose\"` to see log output (`-s`) and individual test results (`--verbose`).\n\n## Development\n\nLatest changes that require pre-release of [ocrd >= 2.0.0](https://github.com/OCR-D/core/tree/edge) are kept in branch [`edge`](https://github.com/OCR-D/ocrd_tesserocr/tree/edge).\n",
             "ocrd-tool.json": "{\n  \"version\": \"0.3.0\",\n  \"git_url\": \"https://github.com/OCR-D/ocrd_tesserocr\",\n  \"dockerhub\": \"ocrd/tesserocr\",\n  \"tools\": {\n    \"ocrd-tesserocr-deskew\": {\n      \"executable\": \"ocrd-tesserocr-deskew\",\n      \"categories\": [\"Image preprocessing\"],\n      \"description\": \"Deskew pages or regions\",\n      \"input_file_grp\": [\n        \"OCR-D-IMG\",\n        \"OCR-D-SEG-BLOCK\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-DESKEW-BLOCK\"\n      ],\n      \"steps\": [\"preprocessing/optimization/deskewing\"],\n      \"parameters\": {\n        \"operation_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"page\",\"region\"],\n          \"default\": \"region\",\n          \"description\": \"PAGE XML hierarchy level to operate on\"\n        }\n      }\n    },\n    \"ocrd-tesserocr-recognize\": {\n      \"executable\": \"ocrd-tesserocr-recognize\",\n      \"categories\": [\"Text recognition and optimization\"],\n      \"description\": \"Recognize text in lines with tesseract\",\n      \"input_file_grp\": [\n        \"OCR-D-SEG-BLOCK\",\n        \"OCR-D-SEG-LINE\",\n        \"OCR-D-SEG-WORD\",\n        \"OCR-D-SEG-GLYPH\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-OCR-TESS\"\n      ],\n      \"steps\": [\"recognition/text-recognition\"],\n      \"parameters\": {\n        \"textequiv_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"region\", \"line\", \"word\", \"glyph\"],\n          \"default\": \"line\",\n          \"description\": \"PAGE XML hierarchy level to add the TextEquiv results to (requires existing layout annotation up to one level above that)\"\n        },\n        \"overwrite_words\": {\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"remove existing layout and text annotation below the TextLine level (regardless of textequiv_level)\"\n        },\n        \"model\": {\n          \"type\": \"string\",\n          \"description\": \"tessdata model to apply (an ISO 639-3 language specification or some other basename, e.g. deu-frak or Fraktur)\"\n        }\n      }\n    },\n     \"ocrd-tesserocr-segment-region\": {\n      \"executable\": \"ocrd-tesserocr-segment-region\",\n      \"categories\": [\"Layout analysis\"],\n      \"description\": \"Segment regions into lines with tesseract\",\n      \"input_file_grp\": [\n        \"OCR-D-IMG\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-SEG-BLOCK\"\n      ],\n      \"steps\": [\"layout/segmentation/region\"],\n      \"parameters\": {\n        \"overwrite_regions\": {\n          \"type\": \"boolean\",\n          \"default\": true,\n          \"description\": \"remove existing layout and text annotation below the Page level\"\n        },\n        \"padding\": {\n          \"type\": \"number\",\n          \"format\": \"integer\",\n          \"description\": \"extend detected region rectangles by this many (true) pixels\",\n          \"default\": 8\n        },\n        \"crop_polygons\": {\n          \"type\": \"boolean\",\n          \"default\": false,\n          \"description\": \"annotate polygon coordinates instead of rectangles, and create cropped AlternativeImage masked by the polygon outlines\"\n        },\n        \"find_tables\": {\n          \"type\": \"boolean\",\n          \"default\": true,\n          \"description\": \"recognise table regions (textord_tabfind_find_tables)\"\n        }\n      }\n    },\n    \"ocrd-tesserocr-segment-line\": {\n      \"executable\": \"ocrd-tesserocr-segment-line\",\n      \"categories\": [\"Layout analysis\"],\n      \"description\": \"Segment page into regions with tesseract\",\n      \"input_file_grp\": [\n        \"OCR-D-SEG-BLOCK\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-SEG-LINE\"\n      ],\n      \"steps\": [\"layout/segmentation/line\"],\n      \"parameters\": {\n        \"overwrite_lines\": {\n          \"type\": \"boolean\",\n          \"default\": true,\n          \"description\": \"remove existing layout and text annotation below the TextRegion level\"\n        }\n      }\n    },\n    \"ocrd-tesserocr-segment-word\": {\n      \"executable\": \"ocrd-tesserocr-segment-word\",\n      \"categories\": [\"Layout analysis\"],\n      \"description\": \"Segment lines into words with tesseract\",\n      \"input_file_grp\": [\n        \"OCR-D-SEG-LINE\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-SEG-WORD\"\n      ],\n      \"steps\": [\"layout/segmentation/word\"],\n      \"parameters\": {\n        \"overwrite_words\": {\n          \"type\": \"boolean\",\n          \"default\": true,\n          \"description\": \"remove existing layout and text annotation below the TextLine level\"\n        }\n      }\n    },\n    \"ocrd-tesserocr-crop\": {\n      \"executable\": \"ocrd-tesserocr-crop\",\n      \"categories\": [\"Image preprocessing\"],\n      \"description\": \"Poor man's cropping with tesseract\",\n      \"input_file_grp\": [\n\t\"OCR-D-IMG\"\n      ],\n      \"output_file_grp\": [\n\t\"OCR-D-IMG-CROPPED\"\n      ],\n      \"steps\": [\"preprocessing/optimization/cropping\"],\n      \"parameters\" : {\n        \"padding\": {\n          \"type\": \"number\",\n          \"format\": \"integer\",\n          \"description\": \"extend detected border by this many (true) pixels on every side\",\n          \"default\": 4\n        }\n      }\n    },\n    \"ocrd-tesserocr-binarize\": {\n      \"executable\": \"ocrd-tesserocr-binarize\",\n      \"categories\": [\"Image preprocessing\"],\n      \"description\": \"Binarize regions or lines\",\n      \"input_file_grp\": [\n        \"OCR-D-IMG\",\n        \"OCR-D-SEG-BLOCK\",\n        \"OCR-D-SEG-LINE\"\n      ],\n      \"output_file_grp\": [\n        \"OCR-D-BIN-BLOCK\",\n        \"OCR-D-BIN-LINE\"\n      ],\n      \"steps\": [\"preprocessing/optimization/binarization\"],\n      \"parameters\": {\n        \"operation_level\": {\n          \"type\": \"string\",\n          \"enum\": [\"region\", \"line\"],\n          \"default\": \"region\",\n          \"description\": \"PAGE XML hierarchy level to operate on\"\n        }\n      }\n    }\n  }\n}\n",
-            "setup.py": "# -*- coding: utf-8 -*-\n\"\"\"\nInstalls five executables:\n\n    - ocrd_tesserocr_recognize\n    - ocrd_tesserocr_segment_region\n    - ocrd_tesserocr_segment_line\n    - ocrd_tesserocr_segment_word\n    - ocrd_tesserocr_crop\n    - ocrd_tesserocr_deskew\n    - ocrd_tesserocr_binarize\n\"\"\"\nimport codecs\n\nfrom setuptools import setup, find_packages\n\nsetup(\n    name='ocrd_tesserocr',\n    version='0.4.1',\n    description='Tesserocr bindings',\n    long_description=codecs.open('README.rst', encoding='utf-8').read(),\n    author='Konstantin Baierer, Kay-Michael W\u00fcrzner, Robert Sachunsky',\n    author_email='unixprog@gmail.com, wuerzner@gmail.com, sachunsky@informatik.uni-leipzig.de',\n    url='https://github.com/OCR-D/ocrd_tesserocr',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=open('requirements.txt').read().split('\\n'),\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'ocrd-tesserocr-recognize=ocrd_tesserocr.cli:ocrd_tesserocr_recognize',\n            'ocrd-tesserocr-segment-region=ocrd_tesserocr.cli:ocrd_tesserocr_segment_region',\n            'ocrd-tesserocr-segment-line=ocrd_tesserocr.cli:ocrd_tesserocr_segment_line',\n            'ocrd-tesserocr-segment-word=ocrd_tesserocr.cli:ocrd_tesserocr_segment_word',\n            'ocrd-tesserocr-crop=ocrd_tesserocr.cli:ocrd_tesserocr_crop',\n            'ocrd-tesserocr-deskew=ocrd_tesserocr.cli:ocrd_tesserocr_deskew',\n            'ocrd-tesserocr-binarize=ocrd_tesserocr.cli:ocrd_tesserocr_binarize',\n        ]\n    },\n)\n"
+            "setup.py": "# -*- coding: utf-8 -*-\n\"\"\"\nInstalls five executables:\n\n    - ocrd_tesserocr_recognize\n    - ocrd_tesserocr_segment_region\n    - ocrd_tesserocr_segment_line\n    - ocrd_tesserocr_segment_word\n    - ocrd_tesserocr_crop\n    - ocrd_tesserocr_deskew\n    - ocrd_tesserocr_binarize\n\"\"\"\nimport codecs\n\nfrom setuptools import setup, find_packages\n\nsetup(\n    name='ocrd_tesserocr',\n    version='0.4.1',\n    description='Tesserocr bindings',\n    long_description=codecs.open('README.md', encoding='utf-8').read(),\n    long_description_content_type='text/markdown',\n    author='Konstantin Baierer, Kay-Michael W\u00fcrzner, Robert Sachunsky',\n    author_email='unixprog@gmail.com, wuerzner@gmail.com, sachunsky@informatik.uni-leipzig.de',\n    url='https://github.com/OCR-D/ocrd_tesserocr',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=open('requirements.txt').read().split('\\n'),\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'ocrd-tesserocr-recognize=ocrd_tesserocr.cli:ocrd_tesserocr_recognize',\n            'ocrd-tesserocr-segment-region=ocrd_tesserocr.cli:ocrd_tesserocr_segment_region',\n            'ocrd-tesserocr-segment-line=ocrd_tesserocr.cli:ocrd_tesserocr_segment_line',\n            'ocrd-tesserocr-segment-word=ocrd_tesserocr.cli:ocrd_tesserocr_segment_word',\n            'ocrd-tesserocr-crop=ocrd_tesserocr.cli:ocrd_tesserocr_crop',\n            'ocrd-tesserocr-deskew=ocrd_tesserocr.cli:ocrd_tesserocr_deskew',\n            'ocrd-tesserocr-binarize=ocrd_tesserocr.cli:ocrd_tesserocr_binarize',\n        ]\n    },\n)\n"
         },
         "git": {
-            "last_commit": "Thu Sep 26 15:06:11 2019 +0200",
-            "latest_tag": "v0.4.0",
-            "number_of_commits": "252",
+            "last_commit": "Thu Oct 31 15:57:07 2019 +0100",
+            "latest_tag": "v0.4.1",
+            "number_of_commits": "262",
             "url": "https://github.com/OCR-D/ocrd_tesserocr.git"
         },
         "name": "ocrd_tesserocr",
@@ -2864,14 +2919,14 @@
     {
         "files": {
             "Dockerfile": null,
-            "README.md": "# Document Preprocessing and Segmentation\n\n[![CircleCI](https://circleci.com/gh/mjenckel/OCR-D-LAYoutERkennung.svg?style=svg)](https://circleci.com/gh/mjenckel/OCR-D-LAYoutERkennung)\n\n> Tools for preprocessing scanned images for OCR\n\n# Installing\n\nTo install anyBaseOCR dependencies system-wide:\n\n    $ sudo pip install .\n\nAlternatively, dependencies can be installed into a Virtual Environment:\n\n    $ virtualenv venv\n    $ source venv/bin/activate\n    $ pip install -e .\n\n## Tools included\n\nTo see how to run binarization, deskew, crop and dewarp, text/non-text segmentation and textline segmentation methods, please follow corresponding below files for a detailed description :\n\n   * [README_binarize.md](https://github.com/mjenckel/OCR-D-LAYoutERkennung/tree/master/docs/README_binarize.md) instruction for binarization method\n   * [README_deskew.md](https://github.com/mjenckel/OCR-D-LAYoutERkennung/tree/master/docs/README_deskew.md) instruction for deskew method\n   * [README_cropping.md](https://github.com/mjenckel/OCR-D-LAYoutERkennung/tree/master/docs/README_cropping.md) instruction for cropping method\n   * [README_dewarp.md](https://github.com/mjenckel/OCR-D-LAYoutERkennung/tree/master/docs/README_dewarp.md) instruction for dewarp method\n   * [README_tiseg.md](https://github.com/mjenckel/OCR-D-LAYoutERkennung/tree/master/docs/README_tigseg.md) instruction for text/non-text segmentation method\n   * [README_textline.md](https://github.com/mjenckel/OCR-D-LAYoutERkennung/tree/master/docs/README_textline.md) instruction for textline segmentation method\n\n## Binarizer\n\n### Method Behaviour \n This function takes a scanned colored /gray scale document image as input and do the black and white binarize image.\n \n #### Usage:\n```sh\nocrd-anybaseocr-binarize -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-binarize \\\n   -m mets.xml \\\n   -I OCR-D-IMG \\\n   -O OCR-D-IMG-BIN\n```\n\n## Deskewer\n\n### Method Behaviour \n This function takes a document image as input and do the skew correction of that document.\n \n #### Usage:\n```sh\nocrd-anybaseocr-deskew -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-deskew \\\n  -m mets.xml \\\n  -I OCR-D-IMG-BIN \\\n  -O OCR-D-IMG-DESKEW\n```\n\n## Cropper\n\n### Method Behaviour \n This function takes a document image as input and crops/selects the page content area only (that's mean remove textual noise as well as any other noise around page content area)\n \n #### Usage:\n```sh\nocrd-anybaseocr-cropping -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-cropping \\\n   -m mets.xml \\\n   -I OCR-D-IMG-DESKEW \\\n   -O OCR-D-IMG-CROP\n```\n\n\n## Dewarper\n\n### Method Behaviour \n This function takes a document image as input and make the text line straight if its curved.\n \n #### Usage:\n```sh\nocrd-anybaseocr-dewarp -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n\n#### Example: \n```sh\nCUDA_VISIBLE_DEVICES=0 ocrd-anybaseocr-dewarp \\\n   -m mets.xml \\\n   -I OCR-D-IMG-CROP \\\n   -O OCR-D-IMG-DEWARP\n   -p params.json \n```\n\n## Text/Non-Text Segmenter\n\n### Method Behaviour \n This function takes a document image as an input and separates the text and non-text part from the input document image.\n \n #### Usage:\n```sh\nocrd-anybaseocr-tiseg -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-tiseg \\\n\t-m mets.xml \\\n\t-I OCR-D-IMG-CROP \\\n\t-O OCR-D-IMG-TISEG\n```\n\n## Textline Segmenter\n\n### Method Behaviour \n This function takes a cropped document image as an input and segment the image into textline images.\n \n #### Usage:\n```sh\nocrd-anybaseocr-textline -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-textline \\\n\t-m mets.xml \\\n\t-I OCR-D-IMG-TISEG \\\n\t-O OCR-D-IMG-TL\n```\n\n\n## Testing\n\nTo test the tools, download [OCR-D/assets](https://github.com/OCR-D/assets). In\nparticular, the code is tested with the\n[dfki-testdata](https://github.com/OCR-D/assets/tree/master/data/dfki-testdata)\ndataset.\n\nRun `make test` to run all tests.\n\n## License\n\n\n```\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n ```\n",
-            "ocrd-tool.json": "{\n  \"git_url\": \"https://github.com/mjenckel/LAYoutERkennung/\",\n  \"version\": \"0.0.1\",\n  \"tools\": {\n    \"ocrd-anybaseocr-binarize\": {\n      \"executable\": \"ocrd-anybaseocr-binarize\",\n      \"description\": \"Binarize images with the algorithm from ocropy\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/binarization\"],\n      \"input_file_grp\": [\"OCR-D-IMG\"],\n      \"output_file_grp\": [\"OCR-D-IMG-BIN\"],\n      \"parameters\": {\n        \"nocheck\":         {\"type\": \"boolean\",                     \"default\": false, \"description\": \"disable error checking on inputs\"},\n        \"show\":            {\"type\": \"boolean\",                     \"default\": false, \"description\": \"display final results\"},\n        \"raw_copy\":        {\"type\": \"boolean\",                     \"default\": false, \"description\": \"also copy the raw image\"},\n        \"gray\":            {\"type\": \"boolean\",                     \"default\": false, \"description\": \"force grayscale processing even if image seems binary\"},\n        \"bignore\":         {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.1,   \"description\": \"ignore this much of the border for threshold estimation\"},\n        \"debug\":           {\"type\": \"number\", \"format\": \"integer\", \"default\": 0,     \"description\": \"display intermediate results\"},\n        \"escale\":          {\"type\": \"number\", \"format\": \"float\",   \"default\": 1.0,   \"description\": \"scale for estimating a mask over the text region\"},\n        \"hi\":              {\"type\": \"number\", \"format\": \"float\",   \"default\": 90,    \"description\": \"percentile for white estimation\"},\n        \"lo\":              {\"type\": \"number\", \"format\": \"float\",   \"default\": 5,     \"description\": \"percentile for black estimation\"},\n        \"perc\":            {\"type\": \"number\", \"format\": \"float\",   \"default\": 80,    \"description\": \"percentage for filters\"},\n        \"range\":           {\"type\": \"number\", \"format\": \"integer\", \"default\": 20,    \"description\": \"range for filters\"},\n        \"threshold\":       {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.5,   \"description\": \"threshold, determines lightness\"},\n        \"zoom\":            {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.5,   \"description\": \"zoom for page background estimation, smaller=faster\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-deskew\": {\n      \"executable\": \"ocrd-anybaseocr-deskew\",\n      \"description\": \"Deskew images with the algorithm from ocropy\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/deskewing\"],\n      \"input_file_grp\": [\"OCR-D-IMG-BIN\"],\n      \"output_file_grp\": [\"OCR-D-IMG-DESKEW\"],\n      \"parameters\": {\n        \"escale\":    {\"type\": \"number\", \"format\": \"float\",   \"default\": 1.0, \"description\": \"scale for estimating a mask over the text region\"},\n        \"bignore\":   {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.1, \"description\": \"ignore this much of the border for threshold estimation\"},\n        \"threshold\": {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.5, \"description\": \"threshold, determines lightness\"},\n        \"maxskew\":   {\"type\": \"number\", \"format\": \"float\",   \"default\": 1.0, \"description\": \"skew angle estimation parameters (degrees)\"},\n        \"skewsteps\": {\"type\": \"number\", \"format\": \"integer\", \"default\": 8,   \"description\": \"steps for skew angle estimation (per degree)\"},\n        \"debug\":     {\"type\": \"number\", \"format\": \"integer\", \"default\": 0,   \"description\": \"display intermediate results\"},\n        \"parallel\":  {\"type\": \"number\", \"format\": \"integer\", \"default\": 0,   \"description\": \"???\"},\n        \"lo\":        {\"type\": \"number\", \"format\": \"integer\", \"default\": 5,   \"description\": \"percentile for black estimation\"},\n        \"hi\":        {\"type\": \"number\", \"format\": \"integer\", \"default\": 90,   \"description\": \"percentile for white estimation\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-crop\": {\n      \"executable\": \"ocrd-anybaseocr-crop\",\n      \"description\": \"Image crop using non-linear processing\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/cropping\"],\n      \"input_file_grp\": [\"OCR-D-IMG-DESKEW\"],\n      \"output_file_grp\": [\"OCR-D-IMG-CROP\"],\n      \"parameters\": {\n        \"colSeparator\":  {\"type\": \"number\", \"format\": \"float\", \"default\": 0.04, \"description\": \"consider space between column. 25% of width\"},\n        \"maxRularArea\":  {\"type\": \"number\", \"format\": \"float\", \"default\": 0.3, \"description\": \"Consider maximum rular area\"},\n        \"minArea\":       {\"type\": \"number\", \"format\": \"float\", \"default\": 0.05, \"description\": \"rular position in below\"},\n        \"minRularArea\":  {\"type\": \"number\", \"format\": \"float\", \"default\": 0.01, \"description\": \"Consider minimum rular area\"},\n        \"positionBelow\": {\"type\": \"number\", \"format\": \"float\", \"default\": 0.75, \"description\": \"rular position in below\"},\n        \"positionLeft\":  {\"type\": \"number\", \"format\": \"float\", \"default\": 0.4, \"description\": \"rular position in left\"},\n        \"positionRight\": {\"type\": \"number\", \"format\": \"float\", \"default\": 0.6, \"description\": \"rular position in right\"},\n        \"rularRatioMax\": {\"type\": \"number\", \"format\": \"float\", \"default\": 10.0, \"description\": \"rular position in below\"},\n        \"rularRatioMin\": {\"type\": \"number\", \"format\": \"float\", \"default\": 3.0, \"description\": \"rular position in below\"},\n        \"rularWidth\":    {\"type\": \"number\", \"format\": \"float\", \"default\": 0.95, \"description\": \"maximum rular width\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-dewarp\": {\n      \"executable\": \"ocrd-anybaseocr-dewarp\",\n      \"description\": \"dewarp image with anyBaseOCR\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/dewarping\"],\n      \"input_file_grp\": [\"OCR-D-IMG-CROP\"],\n      \"output_file_grp\": [\"OCR-D-IMG-DEWARP\"],\n      \"parameters\": {\n        \"imgresize\":    { \"type\": \"string\",                      \"default\": \"resize_and_crop\", \"description\": \"run on original size image\"},\n        \"pix2pixHD\":    { \"type\": \"string\",                      \"required\": true, \"description\": \"Path to pix2pixHD library\"},\n        \"gpu_id\":       { \"type\": \"number\", \"format\": \"integer\", \"default\": 0,    \"description\": \"gpu id\"},\n        \"resizeHeight\": { \"type\": \"number\", \"format\": \"integer\", \"default\": 1024, \"description\": \"resized image height\"},\n        \"resizeWidth\":  { \"type\": \"number\", \"format\": \"integer\", \"default\": 1024, \"description\": \"resized image width\"}\n      }\n    },\n    \"ocrd-anybaseocr-tiseg\": {\n      \"executable\": \"ocrd-anybaseocr-tiseg\",\n      \"input_file_grp\": [\"OCR-D-IMG-CROP\"],\n      \"output_file_grp\": [\"OCR-D-SEG-TISEG\"],\n      \"categories\": [\"Layout analysis\"],\n      \"steps\": [\"layout/segmentation/text-image\"],\n      \"description\": \"separate text and non-text part with anyBaseOCR\",\n      \"parameters\": {\n      }\n    },\n    \"ocrd-anybaseocr-textline\": {\n      \"executable\": \"ocrd-anybaseocr-textline\",\n      \"input_file_grp\": [\"OCR-D-SEG-TISEG\"],\n      \"output_file_grp\": [\"OCR-D-SEG-LINE-ANY\"],\n      \"categories\": [\"Layout analysis\"],\n      \"steps\": [\"layout/segmentation/line\"],\n      \"description\": \"separate each text line\",\n      \"parameters\": {\n        \"minscale\":    {\"type\": \"number\", \"format\": \"float\", \"default\": 12.0, \"description\": \"minimum scale permitted\"},\n        \"maxlines\":    {\"type\": \"number\", \"format\": \"float\", \"default\": 300, \"description\": \"non-standard scaling of horizontal parameters\"},\n        \"scale\":       {\"type\": \"number\", \"format\": \"float\", \"default\": 0.0, \"description\": \"the basic scale of the document (roughly, xheight) 0=automatic\"},\n        \"hscale\":      {\"type\": \"number\", \"format\": \"float\", \"default\": 1.0, \"description\": \"non-standard scaling of horizontal parameters\"},\n        \"vscale\":      {\"type\": \"number\", \"format\": \"float\", \"default\": 1.7, \"description\": \"non-standard scaling of vertical parameters\"},\n        \"threshold\":   {\"type\": \"number\", \"format\": \"float\", \"default\": 0.2, \"description\": \"baseline threshold\"},\n        \"noise\":       {\"type\": \"number\", \"format\": \"integer\", \"default\": 8, \"description\": \"noise threshold for removing small components from lines\"},\n        \"usegauss\":    {\"type\": \"boolean\", \"default\": false, \"description\": \"use gaussian instead of uniform\"},\n        \"maxseps\":     {\"type\": \"number\", \"format\": \"integer\", \"default\": 2, \"description\": \"maximum black column separators\"},\n        \"sepwiden\":    {\"type\": \"number\", \"format\": \"integer\", \"default\": 10, \"description\": \"widen black separators (to account for warping)\"},\n        \"blackseps\":   {\"type\": \"boolean\", \"default\": false, \"description\": \"also check for black column separators\"},\n        \"maxcolseps\":  {\"type\": \"number\", \"format\": \"integer\", \"default\": 2, \"description\": \"maximum # whitespace column separators\"},\n        \"csminaspect\": {\"type\": \"number\", \"format\": \"float\", \"default\": 1.1, \"description\": \"minimum aspect ratio for column separators\"},\n        \"csminheight\": {\"type\": \"number\", \"format\": \"float\", \"default\": 6.5, \"description\": \"minimum column height (units=scale)\"},\n        \"pad\":         {\"type\": \"number\", \"format\": \"integer\", \"default\": 3, \"description\": \"padding for extracted lines\"},\n        \"expand\":      {\"type\": \"number\", \"format\": \"integer\", \"default\": 3, \"description\": \"expand mask for grayscale extraction\"},\n        \"parallel\":    {\"type\": \"number\", \"format\": \"integer\", \"default\": 0, \"description\": \"number of CPUs to use\"},\n        \"libpath\":     {\"type\": \"string\", \"default\": \".\", \"description\": \"Library Path for C Executables\"}\n      }\n    },\n    \"ocrd-anybaseocr-layout-analysis\": {\n      \"executable\": \"ocrd-anybaseocr-layout-analysis\",\n      \"input_file_grp\": [\"OCR-D-IMG-CROP\"],\n      \"output_file_grp\": [\"OCR-D-SEG-LAYOUT\"],\n      \"categories\": [\"Layout analysis\"],\n      \"steps\": [\"layout/segmentation/text-image\"],\n      \"description\": \"Analysis of the input document\",\n      \"parameters\": {\n        \"batch_size\":         {\"type\": \"number\", \"format\": \"integer\", \"default\": 4, \"description\": \"Batch size for generating test images\"},\n        \"model_path\":         { \"type\": \"string\",                     \"required\": true, \"description\": \"Path to Layout Structure Classification Model\"},\n        \"class_mapping_path\": { \"type\": \"string\",                     \"required\": true, \"description\": \"Path to Layout Structure Classes\"}\n      }\n    },\n    \"ocrd-anybaseocr-block-segmentation\": {\n      \"executable\": \"ocrd-anybaseocr-block-segmentation\",\n      \"input_file_grp\": [\"OCR-D-IMG\"],\n      \"output_file_grp\": [\"OCR-D-BLOCK-SEGMENT\"],\n      \"categories\": [\"Layout analysis\"],\n      \"steps\": [\"layout/segmentation/text-image\"],\n      \"description\": \"Analysis of the input document\",\n      \"parameters\": {        \n        \"block_segmentation_model\":   { \"type\": \"string\",                     \"required\": true, \"description\": \"Path to Layout Structure Classification Model\"},\n        \"block_segmentation_weights\": { \"type\": \"string\",                     \"required\": true, \"description\": \"Path to Layout Structure Classes\"}\n      }\n    }       \n  }\n}\n",
+            "README.md": "# Document Preprocessing and Segmentation\n\n[![CircleCI](https://circleci.com/gh/mjenckel/OCR-D-LAYoutERkennung.svg?style=svg)](https://circleci.com/gh/mjenckel/OCR-D-LAYoutERkennung)\n\n> Tools for preprocessing scanned images for OCR\n\n# Installing\n\nTo install anyBaseOCR dependencies system-wide:\n\n    $ sudo pip install .\n\nAlternatively, dependencies can be installed into a Virtual Environment:\n\n    $ virtualenv venv\n    $ source venv/bin/activate\n    $ pip install -e .\n\n#Tools\n\n## Binarizer\n\n### Method Behaviour \n This function takes a scanned colored /gray scale document image as input and do the black and white binarize image.\n \n #### Usage:\n```sh\nocrd-anybaseocr-binarize -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-binarize \\\n   -m mets.xml \\\n   -I OCR-D-IMG \\\n   -O OCR-D-IMG-BIN \\\n   -O OCR-D-PAGE-BIN\n```\n\n## Deskewer\n\n### Method Behaviour \n This function takes a document image as input and do the skew correction of that document.\n \n #### Usage:\n```sh\nocrd-anybaseocr-deskew -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-deskew \\\n  -m mets.xml \\\n  -I OCR-D-PAGE-BIN \\\n  -O OCR-D-IMG-DESKEW \\\n  -O OCR-D-PAGE-DESKEW\n```\n\n## Cropper\n\n### Method Behaviour \n This function takes a document image as input and crops/selects the page content area only (that's mean remove textual noise as well as any other noise around page content area)\n \n #### Usage:\n```sh\nocrd-anybaseocr-crop -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-crop \\\n   -m mets.xml \\\n   -I OCR-D-PAGE-DESKEW \\\n   -O OCR-D-IMG-CROP \\\n   -O OCR-D-PAGE-CROP\n```\n\n\n## Dewarper\n\n### Method Behaviour \n This function takes a document image as input and make the text line straight if its curved.\n \n #### Usage:\n```sh\nocrd-anybaseocr-dewarp -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n\n#### Example: \n```sh\nCUDA_VISIBLE_DEVICES=0 ocrd-anybaseocr-dewarp \\\n   -m mets.xml \\\n   -I OCR-D-PAGE-CROP \\\n   -O OCR-D-IMG-DEWARP \\\n   -O OCR-D-PAGE-DEWARP\n```\n\n## Text/Non-Text Segmenter\n\n### Method Behaviour \n This function takes a document image as an input and separates the text and non-text part from the input document image.\n \n #### Usage:\n```sh\nocrd-anybaseocr-tiseg -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-tiseg \\\n   -m mets.xml \\\n   -I OCR-D-PAGE-CROP \\\n   -O OCR-D-IMG-TISEG \\\n   -O OCR-D-PAGE-TISEG\n```\n\n## Textline Segmenter\n\n### Method Behaviour \n This function takes a cropped document image as an input and segment the image into textline images.\n \n #### Usage:\n```sh\nocrd-anybaseocr-textline -m (path to METs input file) -I (Input group name) -O (Output group name) [-p (path to parameter file) -o (METs output filename)]\n```\n\n#### Example: \n```sh\nocrd-anybaseocr-textline \\\n   -m mets.xml \\\n   -I OCR-D-PAGE-TISEG \\\n   -O OCR-D-IMG-TL \\\n   -O OCR-D-PAGE-TL\n```\n\n\n## Testing\n\nTo test the tools, download [OCR-D/assets](https://github.com/OCR-D/assets). In\nparticular, the code is tested with the\n[dfki-testdata](https://github.com/OCR-D/assets/tree/master/data/dfki-testdata)\ndataset.\n\nRun `make test` to run all tests.\n\n## License\n\n\n```\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n ```\n",
+            "ocrd-tool.json": "{\n  \"git_url\": \"https://github.com/mjenckel/LAYoutERkennung/\",\n  \"version\": \"0.0.1\",\n  \"tools\": {\n    \"ocrd-anybaseocr-binarize\": {\n      \"executable\": \"ocrd-anybaseocr-binarize\",\n      \"description\": \"Binarize images with the algorithm from ocropy\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/binarization\"],\n      \"input_file_grp\": [\"OCR-D-IMG\"],\n      \"output_file_grp\": [\"OCR-D-IMG-BIN\"],\n      \"parameters\": {\n        \"nocheck\":         {\"type\": \"boolean\",                     \"default\": false, \"description\": \"disable error checking on inputs\"},\n        \"show\":            {\"type\": \"boolean\",                     \"default\": false, \"description\": \"display final results\"},\n        \"raw_copy\":        {\"type\": \"boolean\",                     \"default\": false, \"description\": \"also copy the raw image\"},\n        \"gray\":            {\"type\": \"boolean\",                     \"default\": false, \"description\": \"force grayscale processing even if image seems binary\"},\n        \"bignore\":         {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.1,   \"description\": \"ignore this much of the border for threshold estimation\"},\n        \"debug\":           {\"type\": \"number\", \"format\": \"integer\", \"default\": 0,     \"description\": \"display intermediate results\"},\n        \"escale\":          {\"type\": \"number\", \"format\": \"float\",   \"default\": 1.0,   \"description\": \"scale for estimating a mask over the text region\"},\n        \"hi\":              {\"type\": \"number\", \"format\": \"float\",   \"default\": 90,    \"description\": \"percentile for white estimation\"},\n        \"lo\":              {\"type\": \"number\", \"format\": \"float\",   \"default\": 5,     \"description\": \"percentile for black estimation\"},\n        \"perc\":            {\"type\": \"number\", \"format\": \"float\",   \"default\": 80,    \"description\": \"percentage for filters\"},\n        \"range\":           {\"type\": \"number\", \"format\": \"integer\", \"default\": 20,    \"description\": \"range for filters\"},\n        \"threshold\":       {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.5,   \"description\": \"threshold, determines lightness\"},\n        \"zoom\":            {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.5,   \"description\": \"zoom for page background estimation, smaller=faster\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-deskew\": {\n      \"executable\": \"ocrd-anybaseocr-deskew\",\n      \"description\": \"Deskew images with the algorithm from ocropy\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/deskewing\"],\n      \"input_file_grp\": [\"OCR-D-IMG-BIN\"],\n      \"output_file_grp\": [\"OCR-D-IMG-DESKEW\"],\n      \"parameters\": {\n        \"escale\":    {\"type\": \"number\", \"format\": \"float\",   \"default\": 1.0, \"description\": \"scale for estimating a mask over the text region\"},\n        \"bignore\":   {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.1, \"description\": \"ignore this much of the border for threshold estimation\"},\n        \"threshold\": {\"type\": \"number\", \"format\": \"float\",   \"default\": 0.5, \"description\": \"threshold, determines lightness\"},\n        \"maxskew\":   {\"type\": \"number\", \"format\": \"float\",   \"default\": 1.0, \"description\": \"skew angle estimation parameters (degrees)\"},\n        \"skewsteps\": {\"type\": \"number\", \"format\": \"integer\", \"default\": 8,   \"description\": \"steps for skew angle estimation (per degree)\"},\n        \"debug\":     {\"type\": \"number\", \"format\": \"integer\", \"default\": 0,   \"description\": \"display intermediate results\"},\n        \"parallel\":  {\"type\": \"number\", \"format\": \"integer\", \"default\": 0,   \"description\": \"???\"},\n        \"lo\":        {\"type\": \"number\", \"format\": \"integer\", \"default\": 5,   \"description\": \"percentile for black estimation\"},\n        \"hi\":        {\"type\": \"number\", \"format\": \"integer\", \"default\": 90,   \"description\": \"percentile for white estimation\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-crop\": {\n      \"executable\": \"ocrd-anybaseocr-crop\",\n      \"description\": \"Image crop using non-linear processing\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/cropping\"],\n      \"input_file_grp\": [\"OCR-D-IMG-DESKEW\"],\n      \"output_file_grp\": [\"OCR-D-IMG-CROP\"],\n      \"parameters\": {\n        \"colSeparator\":  {\"type\": \"number\", \"format\": \"float\", \"default\": 0.04, \"description\": \"consider space between column. 25% of width\"},\n        \"maxRularArea\":  {\"type\": \"number\", \"format\": \"float\", \"default\": 0.3, \"description\": \"Consider maximum rular area\"},\n        \"minArea\":       {\"type\": \"number\", \"format\": \"float\", \"default\": 0.05, \"description\": \"rular position in below\"},\n        \"minRularArea\":  {\"type\": \"number\", \"format\": \"float\", \"default\": 0.01, \"description\": \"Consider minimum rular area\"},\n        \"positionBelow\": {\"type\": \"number\", \"format\": \"float\", \"default\": 0.75, \"description\": \"rular position in below\"},\n        \"positionLeft\":  {\"type\": \"number\", \"format\": \"float\", \"default\": 0.4, \"description\": \"rular position in left\"},\n        \"positionRight\": {\"type\": \"number\", \"format\": \"float\", \"default\": 0.6, \"description\": \"rular position in right\"},\n        \"rularRatioMax\": {\"type\": \"number\", \"format\": \"float\", \"default\": 10.0, \"description\": \"rular position in below\"},\n        \"rularRatioMin\": {\"type\": \"number\", \"format\": \"float\", \"default\": 3.0, \"description\": \"rular position in below\"},\n        \"rularWidth\":    {\"type\": \"number\", \"format\": \"float\", \"default\": 0.95, \"description\": \"maximum rular width\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-dewarp\": {\n      \"executable\": \"ocrd-anybaseocr-dewarp\",\n      \"description\": \"dewarp image with anyBaseOCR\",\n      \"categories\": [\"Image preprocessing\"],\n      \"steps\": [\"preprocessing/optimization/dewarping\"],\n      \"input_file_grp\": [\"OCR-D-IMG-CROP\"],\n      \"output_file_grp\": [\"OCR-D-IMG-DEWARP\"],\n      \"parameters\": {\n        \"imgresize\":    { \"type\": \"string\",                      \"default\": \"resize_and_crop\", \"description\": \"run on original size image\"},\n        \"pix2pixHD\":    { \"type\": \"string\", \"default\":\"/home/ahmed/project/pix2pixHD\", \"description\": \"Path to pix2pixHD library\"},\n        \"model_name\":\t{ \"type\": \"string\", \"default\":\"models\", \"description\": \"name of dir with trained pix2pixHD model (latest_net_G.pth)\"},\n        \"checkpoint_dir\":   { \"type\": \"string\", \"default\":\"./\", \"description\": \"Path to where to look for dir with model name\"},\n        \"gpu_id\":       { \"type\": \"number\", \"format\": \"integer\", \"default\": 0,    \"description\": \"gpu id\"},\n        \"resizeHeight\": { \"type\": \"number\", \"format\": \"integer\", \"default\": 1024, \"description\": \"resized image height\"},\n        \"resizeWidth\":  { \"type\": \"number\", \"format\": \"integer\", \"default\": 1024, \"description\": \"resized image width\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-tiseg\": {\n      \"executable\": \"ocrd-anybaseocr-tiseg\",\n      \"input_file_grp\": [\"OCR-D-IMG-CROP\"],\n      \"output_file_grp\": [\"OCR-D-SEG-TISEG\"],\n      \"categories\": [\"Layout analysis\"],\n      \"steps\": [\"layout/segmentation/text-image\"],\n      \"description\": \"separate text and non-text part with anyBaseOCR\",\n      \"parameters\": {\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-textline\": {\n      \"executable\": \"ocrd-anybaseocr-textline\",\n      \"input_file_grp\": [\"OCR-D-SEG-TISEG\"],\n      \"output_file_grp\": [\"OCR-D-SEG-LINE-ANY\"],\n      \"categories\": [\"Layout analysis\"],\n      \"steps\": [\"layout/segmentation/line\"],\n      \"description\": \"separate each text line\",\n      \"parameters\": {\n        \"minscale\":    {\"type\": \"number\", \"format\": \"float\", \"default\": 12.0, \"description\": \"minimum scale permitted\"},\n        \"maxlines\":    {\"type\": \"number\", \"format\": \"float\", \"default\": 300, \"description\": \"non-standard scaling of horizontal parameters\"},\n        \"scale\":       {\"type\": \"number\", \"format\": \"float\", \"default\": 0.0, \"description\": \"the basic scale of the document (roughly, xheight) 0=automatic\"},\n        \"hscale\":      {\"type\": \"number\", \"format\": \"float\", \"default\": 1.0, \"description\": \"non-standard scaling of horizontal parameters\"},\n        \"vscale\":      {\"type\": \"number\", \"format\": \"float\", \"default\": 1.7, \"description\": \"non-standard scaling of vertical parameters\"},\n        \"threshold\":   {\"type\": \"number\", \"format\": \"float\", \"default\": 0.2, \"description\": \"baseline threshold\"},\n        \"noise\":       {\"type\": \"number\", \"format\": \"integer\", \"default\": 8, \"description\": \"noise threshold for removing small components from lines\"},\n        \"usegauss\":    {\"type\": \"boolean\", \"default\": false, \"description\": \"use gaussian instead of uniform\"},\n        \"maxseps\":     {\"type\": \"number\", \"format\": \"integer\", \"default\": 2, \"description\": \"maximum black column separators\"},\n        \"sepwiden\":    {\"type\": \"number\", \"format\": \"integer\", \"default\": 10, \"description\": \"widen black separators (to account for warping)\"},\n        \"blackseps\":   {\"type\": \"boolean\", \"default\": false, \"description\": \"also check for black column separators\"},\n        \"maxcolseps\":  {\"type\": \"number\", \"format\": \"integer\", \"default\": 2, \"description\": \"maximum # whitespace column separators\"},\n        \"csminaspect\": {\"type\": \"number\", \"format\": \"float\", \"default\": 1.1, \"description\": \"minimum aspect ratio for column separators\"},\n        \"csminheight\": {\"type\": \"number\", \"format\": \"float\", \"default\": 6.5, \"description\": \"minimum column height (units=scale)\"},\n        \"pad\":         {\"type\": \"number\", \"format\": \"integer\", \"default\": 3, \"description\": \"padding for extracted lines\"},\n        \"expand\":      {\"type\": \"number\", \"format\": \"integer\", \"default\": 3, \"description\": \"expand mask for grayscale extraction\"},\n        \"parallel\":    {\"type\": \"number\", \"format\": \"integer\", \"default\": 0, \"description\": \"number of CPUs to use\"},\n        \"libpath\":     {\"type\": \"string\", \"default\": \".\", \"description\": \"Library Path for C Executables\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }\n    },\n    \"ocrd-anybaseocr-layout-analysis\": {\n      \"executable\": \"ocrd-anybaseocr-layout-analysis\",\n      \"input_file_grp\": [\"OCR-D-IMG-CROP\"],\n      \"output_file_grp\": [\"OCR-D-SEG-LAYOUT\"],\n      \"categories\": [\"Layout analysis\"],\n      \"steps\": [\"layout/segmentation/text-image\"],\n      \"description\": \"Analysis of the input document\",\n      \"parameters\": {\n        \"batch_size\":         {\"type\": \"number\", \"format\": \"integer\", \"default\": 4, \"description\": \"Batch size for generating test images\"},\n        \"model_path\":         { \"type\": \"string\", \"default\":\"models/structure_analysis.h5\", \"required\": false, \"description\": \"Path to Layout Structure Classification Model\"},\n        \"class_mapping_path\": { \"type\": \"string\", \"default\":\"models/mapping_DenseNet.h5\",\"required\": false, \"description\": \"Path to Layout Structure Classes\"}\n      }\n    },\n    \"ocrd-anybaseocr-block-segmentation\": {\n      \"executable\": \"ocrd-anybaseocr-block-segmentation\",\n      \"input_file_grp\": [\"OCR-D-IMG\"],\n      \"output_file_grp\": [\"OCR-D-BLOCK-SEGMENT\"],\n      \"categories\": [\"Layout analysis\"],\n      \"steps\": [\"layout/segmentation/text-image\"],\n      \"description\": \"Analysis of the input document\",\n      \"parameters\": {        \n        \"block_segmentation_model\":   { \"type\": \"string\",\"default\":\"mrcnn/\", \"required\": false, \"description\": \"Path to block segmentation Model\"},\n        \"block_segmentation_weights\": { \"type\": \"string\",\"default\":\"mrcnn/block_segmentation_weights.h5\",  \"required\": false, \"description\": \"Path to model weights\"},\n        \"operation_level\": {\"type\": \"string\", \"enum\": [\"page\",\"region\", \"line\"], \"default\": \"page\",\"description\": \"PAGE XML hierarchy level to operate on\"}\n      }       \n    }\n  }\n}\n",
             "setup.py": "# -*- coding: utf-8 -*-\nfrom setuptools import setup, find_packages\n\nsetup(\n    name='ocrd-anybaseocr',\n    version='v0.0.1',\n    author=\"DFKI\",\n    author_email=\"Saqib.Bukhari@dfki.de, Mohammad_mohsin.reza@dfki.de\",\n    url=\"https://github.com/mjenckel/LAYoutERkennung\",\n    license='Apache License 2.0',\n    long_description=open('README.md').read(),\n    long_description_content_type='text/markdown',\n    install_requires=open('requirements.txt').read().split('\\n'),\n    packages=find_packages(exclude=[\"work_dir\", \"src\"]),\n    package_data={\n        '': ['*.json']\n    },\n    entry_points={\n        'console_scripts': [\n            'ocrd-anybaseocr-binarize           = ocrd_anybaseocr.cli.cli:ocrd_anybaseocr_binarize',\n            'ocrd-anybaseocr-deskew             = ocrd_anybaseocr.cli.cli:ocrd_anybaseocr_deskew',\n            'ocrd-anybaseocr-crop               = ocrd_anybaseocr.cli.cli:ocrd_anybaseocr_cropping',        \n            'ocrd-anybaseocr-dewarp             = ocrd_anybaseocr.cli.cli:ocrd_anybaseocr_dewarp',\n            'ocrd-anybaseocr-tiseg              = ocrd_anybaseocr.cli.cli:ocrd_anybaseocr_tiseg',\n            'ocrd-anybaseocr-textline           = ocrd_anybaseocr.cli.cli:ocrd_anybaseocr_textline',\n            'ocrd-anybaseocr-layout-analysis    = ocrd_anybaseocr.cli.cli:ocrd_anybaseocr_layout_analysis',\n            'ocrd-anybaseocr-block-segmentation = ocrd_anybaseocr.cli.cli:ocrd_anybaseocr_block_segmentation'\n        ]\n    },\n)\n"
         },
         "git": {
-            "last_commit": "Tue Oct 22 17:00:56 2019 +0200",
+            "last_commit": "Fri Nov 1 12:41:51 2019 +0100",
             "latest_tag": "",
-            "number_of_commits": "75",
+            "number_of_commits": "84",
             "url": "https://github.com/mjenckel/LAYoutERkennung"
         },
         "name": "LAYoutERkennung",
@@ -2994,13 +3049,25 @@
                     ],
                     "parameters": {
                         "block_segmentation_model": {
-                            "description": "Path to Layout Structure Classification Model",
-                            "required": true,
+                            "default": "mrcnn/",
+                            "description": "Path to block segmentation Model",
+                            "required": false,
                             "type": "string"
                         },
                         "block_segmentation_weights": {
-                            "description": "Path to Layout Structure Classes",
-                            "required": true,
+                            "default": "mrcnn/block_segmentation_weights.h5",
+                            "description": "Path to model weights",
+                            "required": false,
+                            "type": "string"
+                        },
+                        "operation_level": {
+                            "default": "page",
+                            "description": "PAGE XML hierarchy level to operate on",
+                            "enum": [
+                                "page",
+                                "region",
+                                "line"
+                            ],
                             "type": "string"
                         }
                     },
@@ -3191,6 +3258,11 @@
                         "OCR-D-IMG-DEWARP"
                     ],
                     "parameters": {
+                        "checkpoint_dir": {
+                            "default": "./",
+                            "description": "Path to where to look for dir with model name",
+                            "type": "string"
+                        },
                         "gpu_id": {
                             "default": 0,
                             "description": "gpu id",
@@ -3202,9 +3274,24 @@
                             "description": "run on original size image",
                             "type": "string"
                         },
+                        "model_name": {
+                            "default": "models",
+                            "description": "name of dir with trained pix2pixHD model (latest_net_G.pth)",
+                            "type": "string"
+                        },
+                        "operation_level": {
+                            "default": "page",
+                            "description": "PAGE XML hierarchy level to operate on",
+                            "enum": [
+                                "page",
+                                "region",
+                                "line"
+                            ],
+                            "type": "string"
+                        },
                         "pix2pixHD": {
+                            "default": "/home/ahmed/project/pix2pixHD",
                             "description": "Path to pix2pixHD library",
-                            "required": true,
                             "type": "string"
                         },
                         "resizeHeight": {
@@ -3244,13 +3331,15 @@
                             "type": "number"
                         },
                         "class_mapping_path": {
+                            "default": "models/mapping_DenseNet.h5",
                             "description": "Path to Layout Structure Classes",
-                            "required": true,
+                            "required": false,
                             "type": "string"
                         },
                         "model_path": {
+                            "default": "models/structure_analysis.h5",
                             "description": "Path to Layout Structure Classification Model",
-                            "required": true,
+                            "required": false,
                             "type": "string"
                         }
                     },
@@ -3335,6 +3424,16 @@
                             "format": "integer",
                             "type": "number"
                         },
+                        "operation_level": {
+                            "default": "page",
+                            "description": "PAGE XML hierarchy level to operate on",
+                            "enum": [
+                                "page",
+                                "region",
+                                "line"
+                            ],
+                            "type": "string"
+                        },
                         "pad": {
                             "default": 3,
                             "description": "padding for extracted lines",
@@ -3393,7 +3492,18 @@
                     "output_file_grp": [
                         "OCR-D-SEG-TISEG"
                     ],
-                    "parameters": {},
+                    "parameters": {
+                        "operation_level": {
+                            "default": "page",
+                            "description": "PAGE XML hierarchy level to operate on",
+                            "enum": [
+                                "page",
+                                "region",
+                                "line"
+                            ],
+                            "type": "string"
+                        }
+                    },
                     "steps": [
                         "layout/segmentation/text-image"
                     ]
@@ -3421,9 +3531,9 @@
             "setup.py": "# -*- coding: utf-8 -*-\n\"\"\"\nInstalls binaries:\n    - ocropus-gpageseg-with-coords\n    - ocrd-pc-seg-process\n    - ocrd-pc-seg-single\n\"\"\"\nimport codecs\n\nfrom setuptools import setup, find_packages\n\nsetup(\n    name='ocrd_pc_segmentation',\n    version='0.1.0',\n    description='pixel-classifier based page segmentation',\n    long_description=codecs.open('README.md', encoding='utf-8').read(),\n    long_description_content_type='text/markdown',\n    author='Alexander Gehrke, Christian Reul, Christoph Wick',\n    author_email='alexander.gehrke@uni-wuerzburg.de, christian.reul@uni-wuerzburg.de, christoph.wick@uni-wuerzburg.de',\n    url='https://github.com/ocr-d-modul-2-segmentierung/segmentation-runner',\n    license='Apache License 2.0',\n    packages=find_packages(exclude=('tests', 'docs')),\n    install_requires=open(\"requirements.txt\").read().split(),\n    extras_require={\n        'tf_cpu': ['page-segmentation[tf_cpu]>=0.0.1'],\n        'tf_gpu': ['page-segmentation[tf_gpu]>=0.0.1'],\n    },\n    package_data={\n        '': ['*.json', '*.yml', '*.yaml'],\n    },\n    entry_points={\n        'console_scripts': [\n            'ocrd-pc-seg-single=ocrd_pc_segmentation.pc_segmentation:main',\n            'ocrd-pc-seg-process=ocrd_pc_segmentation.seg_process:main',\n        ]\n    },\n    scripts=['ocrd_pc_segmentation/ocropus-gpageseg-with-coords'],\n)\n"
         },
         "git": {
-            "last_commit": "Fri Mar 29 16:48:09 2019 +0100",
+            "last_commit": "Fri Oct 25 15:59:53 2019 +0200",
             "latest_tag": "",
-            "number_of_commits": "3",
+            "number_of_commits": "4",
             "url": "https://github.com/ocr-d-modul-2-segmentierung/segmentation-runner"
         },
         "name": "segmentation-runner",
@@ -3448,9 +3558,9 @@
             "setup.py": "from io import open\nfrom setuptools import find_packages, setup\n\nwith open('requirements.txt') as fp:\n    install_requires = fp.read()\n\nsetup(\n    name='dinglehopper',\n    author='Mike Gerber, The QURATOR SPK Team',\n    author_email='mike.gerber@sbb.spk-berlin.de, qurator@sbb.spk-berlin.de',\n    description='The OCR evaluation tool',\n    long_description=open('README.md', 'r', encoding='utf-8').read(),\n    long_description_content_type='text/markdown',\n    keywords='qurator ocr',\n    license='Apache',\n    namespace_packages=['qurator'],\n    packages=find_packages(exclude=['*.tests', '*.tests.*', 'tests.*', 'tests']),\n    install_requires=install_requires,\n    package_data={\n        '': ['*.json', 'templates/*'],\n    },\n    entry_points={\n      'console_scripts': [\n        'dinglehopper=qurator.dinglehopper.cli:main',\n        'ocrd-dinglehopper=qurator.dinglehopper.ocrd_cli:ocrd_dinglehopper',\n      ]\n    }\n)\n"
         },
         "git": {
-            "last_commit": "Fri Oct 18 17:45:24 2019 +0200",
+            "last_commit": "Mon Oct 28 15:05:08 2019 +0100",
             "latest_tag": "",
-            "number_of_commits": "32",
+            "number_of_commits": "37",
             "url": "https://github.com/qurator-spk/dinglehopper.git"
         },
         "name": "dinglehopper",