diff --git a/tools/ketos_ocr/.shed.yml b/tools/ketos_ocr/.shed.yml new file mode 100644 index 0000000000..261df86f52 --- /dev/null +++ b/tools/ketos_ocr/.shed.yml @@ -0,0 +1,18 @@ +name: ketos_ocr +owner: bgruening +description: Wrapper Ketos, the model training part of the OCR system kraken +long_description: | + Ketos is the model training part of the OCR system kraken. It is used to train models for historical and non-Latin script material. +type: unrestricted +categories: + - Natural Language Processing +remote_repository_url: https://github.com/bgruening/galaxytools/tree/master/tools/ketos_ocr +homepage_url: https://kraken.re/ +auto_tool_repositories: + name_template: "{{ tool_id }}" + description_template: "Wrapper for HTR/OCR tool: {{ tool_name }}" +suite: + name: "suite_ketos_ocr" + description: Wrapper of the model training commands for the OCR system kraken + long_description: | + Ketos is the model training part of the OCR system kraken. It is used to train models for historical and non-Latin script material. \ No newline at end of file diff --git a/tools/ketos_ocr/ketos_compile.xml b/tools/ketos_ocr/ketos_compile.xml new file mode 100644 index 0000000000..98a3b90646 --- /dev/null +++ b/tools/ketos_ocr/ketos_compile.xml @@ -0,0 +1,217 @@ + + precompile OCR training data into an Arrow dataset + + macros.xml + macros_for_testing.xml + + + yq + + + 'ground_truth_${i}/annotation.xml' && + #end if + #end for + + ketos compile + --output dataset.arrow + --format-type '$training_data.format_type' + $empty_lines + --recordbatch-size '$recordbatch_size' + + #if str($force_type).strip() and str($force_type) != 'None' + --force-type '$force_type' + #end if + + #if $training_data.format_type != 'path' + #if $training_data.linetype + --linetype '$training_data.linetype' + #end if + + #if $training_data.legacy_polygons + --legacy-polygons + #end if + #end if + + #for $i, $pair in enumerate($pairs) + #if $training_data.format_type == 'path' + #if $input_source.source == 'repeat' + #set $image = $pair.image + #else + #set $image = $pair.forward + #end if + 'ground_truth_${i}.${image.ext}' + #else + 'ground_truth_${i}/annotation.xml' + #end if + #end for + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +**What it does** + +ketos belongs to kraken, an open-source, turn-key automatic text recognition (ATR) +system optimized for historical and non-Latin script writing. +This tool only exposes Kraken's `ketos compile` command, +which compiles OCR ground-truth data into the Apache Arrow IPC dataset format +to be used with Ketos training commands. The expected input is a set of pairs, +either selected manually or provided as a `list:paired` Galaxy collection, where each pair consists of: + +- image (in collection: forward): document or line image in PNG, JPEG, or TIFF format +- annotation (in collection: reverse): OCR ground-truth data in ALTO, PAGE XML, or plain text + +**License** + +Kraken is licensed under the Apache-2.0 license. + + + + diff --git a/tools/ketos_ocr/macros.xml b/tools/ketos_ocr/macros.xml new file mode 100644 index 0000000000..b5d53d8764 --- /dev/null +++ b/tools/ketos_ocr/macros.xml @@ -0,0 +1,177 @@ + + 7.0.3 + 0 + 25.1 + &2; + exit 1; + fi; + } && + #end if + ]]> + + + kraken-ocr + + + + + + + + + + + + dumb + 0 + + + + + 10.16995/dscn.8094 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
diff --git a/tools/ketos_ocr/macros_for_testing.xml b/tools/ketos_ocr/macros_for_testing.xml new file mode 100644 index 0000000000..7df70bbce0 --- /dev/null +++ b/tools/ketos_ocr/macros_for_testing.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/ketos_ocr/test-data/README.md b/tools/ketos_ocr/test-data/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tools/ketos_ocr/test-data/compile_input_line.gt.txt b/tools/ketos_ocr/test-data/compile_input_line.gt.txt new file mode 100644 index 0000000000..d187afe5d9 --- /dev/null +++ b/tools/ketos_ocr/test-data/compile_input_line.gt.txt @@ -0,0 +1 @@ +ἀφειδής.—ἔμπα : this form occurs in Pind. \ No newline at end of file diff --git a/tools/ketos_ocr/test-data/compile_input_line.png b/tools/ketos_ocr/test-data/compile_input_line.png new file mode 100644 index 0000000000..24ce5e3a2b Binary files /dev/null and b/tools/ketos_ocr/test-data/compile_input_line.png differ diff --git a/tools/ketos_ocr/test-data/input.tiff b/tools/ketos_ocr/test-data/input.tiff new file mode 100644 index 0000000000..d45d30657b Binary files /dev/null and b/tools/ketos_ocr/test-data/input.tiff differ diff --git a/tools/ketos_ocr/test-data/input_2pages.tiff b/tools/ketos_ocr/test-data/input_2pages.tiff new file mode 100644 index 0000000000..8d26ab6afd Binary files /dev/null and b/tools/ketos_ocr/test-data/input_2pages.tiff differ diff --git a/tools/ketos_ocr/test-data/input_binarized.png b/tools/ketos_ocr/test-data/input_binarized.png new file mode 100644 index 0000000000..548815ecf3 Binary files /dev/null and b/tools/ketos_ocr/test-data/input_binarized.png differ diff --git a/tools/ketos_ocr/test-data/input_binarized_ocr_output.alto b/tools/ketos_ocr/test-data/input_binarized_ocr_output.alto new file mode 100644 index 0000000000..4b59e0ec88 --- /dev/null +++ b/tools/ketos_ocr/test-data/input_binarized_ocr_output.alto @@ -0,0 +1,6487 @@ + + + + pixel + + input_binarized.png + + + contentGeneration + Text line recognition + text_direction: horizontal-tb; models: /home/ivo/projects/ufr/galaxy/galaxytools/tools/kraken_ocr/test-data/pretrained_mlmodels_various_sources/ocr/catmus-print-fondue-large.mlmodel; pad: 16; bidi_reordering: True + + kraken + 7.0.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/ketos_ocr/test-data/input_binarized_ocr_output.page.xml b/tools/ketos_ocr/test-data/input_binarized_ocr_output.page.xml new file mode 100644 index 0000000000..cd016fb950 --- /dev/null +++ b/tools/ketos_ocr/test-data/input_binarized_ocr_output.page.xml @@ -0,0 +1,6381 @@ + + + + kraken 7.0.2 + 2026-07-21T13:07:48.217058+00:00 + 2026-07-21T13:07:48.217058+00:00 + + + + + + + + + + + + + + + + + 4 + + 4 + + 4 + + + + + + + + + + + + + + 3 + + 3 + + 3 + + + + + + + + + + + h + + + + m + + hm + + hm + + + + + + + + + + + 2 + + + + 1 + + + + 4 + + 214 + + 214 + + + + + + + + + H + + + + I + + + + S + + + + T + + + + O + + + + I + + + + R + + + + E + + HISTOIRE + + HISTOIRE + + + + + + + + + c + + + + e + + + + r + + + + v + + + + e + + + + a + + + + u + + + + . + + cerveau. + + + + + + + + + + + + + + T + + + + o + + + + u + + + + s + + Tous + + + + + + + + + + + + + + c + + + + e + + + + s + + ces + + + + + + + + + + + + + + f + + + + a + + + + i + + + + t + + + + s + + faits + + + + + + + + + + + + + + p + + + + a + + + + r + + + + o + + + + i + + + + s + + + + s + + + + e + + + + n + + + + t + + paroissent + + + + + + + + + + + + + + i + + + + n + + + + c + + + + o + + + + n + + + + ¬ + + incon¬ + + cerveau. Tous ces faits paroissent incon¬ + + + + + + + + + t + + + + e + + + + s + + + + t + + + + a + + + + b + + + + l + + + + e + + + + s + + + + ; + + testables; + + + + + + + + + + + + + + o + + + + n + + on + + + + + + + + + + + + + + d + + + + o + + + + i + + + + t + + doit + + + + + + + + + + + + + + e + + + + ̂ + + + + t + + + + r + + + + e + + être + + + + + + + + + + + + + + s + + + + u + + + + r + + + + p + + + + r + + + + i + + + + s + + surpris + + + + + + + + + + + + + + q + + + + u + + + + + + + + i + + + + l + + + + s + + qu’ils + + + + + + + + + + + + + + a + + + + i + + + + e + + + + n + + + + t + + aient + + testables; on doit être surpris qu’ils aient + + + + + + + + + e + + + + ́ + + + + c + + + + h + + + + a + + + + p + + + + p + + + + e + + + + ́ + + + + s + + échappés + + + + + + + + + + + + + + a + + + + ̀ + + + + + + + + + + + + + + + + l + + + + a + + la + + + + + + + + + + + + + + p + + + + e + + + + r + + + + s + + + + p + + + + i + + + + c + + + + a + + + + c + + + + i + + + + t + + + + e + + + + ́ + + perspicacité + + + + + + + + + + + + + + d + + + + e + + + + s + + des + + + + + + + + + + + + + + a + + + + n + + + + c + + + + i + + + + e + + + + n + + + + s + + + + ; + + anciens; + + + + + + + + + + + + + + m + + + + a + + + + i + + + + s + + + + , + + mais, + + échappés à la perspicacité des anciens; mais, + + + + + + + + + s + + + + i + + si + + + + + + + + + + + + + + q + + + + u + + + + e + + + + l + + + + q + + + + u + + + + e + + quelque + + + + + + + + + + + + + + c + + + + h + + + + o + + + + s + + + + e + + chose + + + + + + + + + + + + + + p + + + + e + + + + u + + + + t + + peut + + + + + + + + + + + + + + l + + + + e + + + + u + + + + r + + leur + + + + + + + + + + + + + + s + + + + e + + + + r + + + + v + + + + i + + + + r + + servir + + + + + + + + + + + + + + d + + + + + + + + e + + + + x + + + + c + + + + u + + + + s + + + + e + + + + , + + d’excuse, + + si quelque chose peut leur servir d’excuse, + + + + + + + + + n + + + + o + + + + u + + + + s + + nous + + + + + + + + + + + + + + d + + + + e + + + + v + + + + o + + + + n + + + + s + + devons + + + + + + + + + + + + + + c + + + + o + + + + n + + + + s + + + + i + + + + d + + + + e + + + + ́ + + + + r + + + + e + + + + r + + considérer + + + + + + + + + + + + + + q + + + + u + + + + + + + + i + + + + l + + qu’il + + + + + + + + + + + + + + s + + + + + + + + e + + + + s + + + + t + + s’est + + + + + + + + + + + + + + e + + + + ́ + + + + c + + + + o + + + + u + + + + l + + + + e + + + + ́ + + écoulé + + + + + + + + + + + + + + a + + + + ̀ + + + + nous devons considérer qu’il s’est écoulé à + + + + + + + + + p + + + + e + + + + i + + + + n + + + + e + + peine + + + + + + + + + + + + + + u + + + + n + + un + + + + + + + + + + + + + + s + + + + i + + + + e + + + + ̀ + + + + c + + + + l + + + + e + + + + , + + siècle, + + + + + + + + + + + + + + d + + + + e + + + + p + + + + u + + + + i + + + + s + + depuis + + + + + + + + + + + + + + q + + + + u + + + + e + + que + + + + + + + + + + + + + + n + + + + o + + + + u + + + + s + + nous + + + + + + + + + + + + + + a + + + + v + + + + o + + + + n + + + + s + + avons + + + + + + + + + + + + + + c + + + + o + + + + m + + + + ¬ + + com¬ + + peine un siècle, depuis que nous avons com¬ + + + + + + + + + m + + + + e + + + + n + + + + c + + + + e + + + + ́ + + mencé + + + + + + + + + + + + + + a + + + + ̀ + + + + + + + + + + + + + + + + c + + + + r + + + + o + + + + i + + + + r + + + + e + + croire + + + + + + + + + + + + + + q + + + + u + + + + e + + que + + + + + + + + + + + + + + l + + + + e + + + + s + + les + + + + + + + + + + + + + + i + + + + n + + + + s + + + + e + + + + c + + + + t + + + + e + + + + s + + insectes + + + + + + + + + + + + + + e + + + + t + + et + + + + + + + + + + + + + + l + + + + e + + + + s + + les + + + + + + + + + + + + + + m + + + + o + + + + l + + + + ¬ + + mol¬ + + mencé à croire que les insectes et les mol¬ + + + + + + + + + l + + + + u + + + + s + + + + q + + + + u + + + + e + + + + s + + lusques + + + + + + + + + + + + + + m + + + + e + + + + ́ + + + + r + + + + i + + + + t + + + + o + + + + i + + + + e + + + + n + + + + t + + méritoient + + + + + + + + + + + + + + q + + + + u + + + + e + + + + l + + + + q + + + + u + + + + e + + quelque + + + + + + + + + + + + + + a + + + + t + + + + t + + + + e + + + + n + + + + t + + + + i + + + + o + + + + n + + + + , + + attention, + + + + + + + + + + + + + + e + + + + t + + et + + lusques méritoient quelque attention, et + + + + + + + + + q + + + + u + + + + + + + + a + + + + v + + + + a + + + + n + + + + t + + qu’avant + + + + + + + + + + + + + + c + + + + e + + ce + + + + + + + + + + + + + + t + + + + e + + + + m + + + + s + + tems + + + + + + + + + + + + + + o + + + + n + + on + + + + + + + + + + + + + + l + + + + e + + + + s + + les + + + + + + + + + + + + + + r + + + + e + + + + g + + + + a + + + + r + + + + d + + + + o + + + + i + + + + t + + regardoit + + + + + + + + + + + + + + c + + + + o + + + + m + + + + m + + + + e + + comme + + + + + + + + + + + + + + d + + + + e + + + + s + + des + + qu’avant ce tems on les regardoit comme des + + + + + + + + + e + + + + ̂ + + + + t + + + + r + + + + e + + + + s + + êtres + + + + + + + + + + + + + + i + + + + m + + + + m + + + + o + + + + n + + + + d + + + + e + + + + s + + + + , + + immondes, + + + + + + + + + + + + + + v + + + + i + + + + l + + vil + + + + + + + + + + + + + + p + + + + r + + + + o + + + + d + + + + u + + + + i + + + + t + + produit + + + + + + + + + + + + + + d + + + + e + + de + + + + + + + + + + + + + + l + + + + a + + la + + + + + + + + + + + + + + p + + + + o + + + + u + + + + r + + + + r + + + + i + + + + ¬ + + pourri¬ + + êtres immondes, vil produit de la pourri¬ + + + + + + + + + t + + + + u + + + + r + + + + e + + ture + + + + + + + + + + + + + + o + + + + u + + ou + + + + + + + + + + + + + + d + + + + e + + de + + + + + + + + + + + + + + l + + + + a + + la + + + + + + + + + + + + + + c + + + + o + + + + r + + + + r + + + + u + + + + p + + + + t + + + + i + + + + o + + + + n + + + + , + + corruption, + + + + + + + + + + + + + + e + + + + t + + et + + + + + + + + + + + + + + p + + + + e + + + + u + + peu + + + + + + + + + + + + + + f + + + + a + + + + i + + + + t + + + + s + + faits + + + + + + + + + + + + + + p + + + + o + + + + u + + + + r + + pour + + ture ou de la corruption, et peu faits pour + + + + + + + + + o + + + + c + + + + c + + + + u + + + + p + + + + e + + + + r + + occuper + + + + + + + + + + + + + + n + + + + o + + + + s + + nos + + + + + + + + + + + + + + r + + + + e + + + + g + + + + a + + + + r + + + + d + + + + s + + + + . + + regards. + + occuper nos regards. + + + + + + + + + S + + + + i + + Si + + + + + + + + + + + + + + n + + + + o + + + + u + + + + s + + nous + + + + + + + + + + + + + + e + + + + n + + en + + + + + + + + + + + + + + e + + + + x + + + + c + + + + e + + + + p + + + + t + + + + o + + + + n + + + + s + + exceptons + + + + + + + + + + + + + + D + + + + i + + + + c + + + + q + + + + u + + + + e + + + + m + + + + a + + + + r + + + + e + + + + , + + Dicquemare, + + + + + + + + + + + + + + q + + + + u + + + + i + + qui + + + + + + + + + + + + + + a + + a + + Si nous en exceptons Dicquemare, qui a + + + + + + + + + p + + + + u + + + + b + + + + l + + + + i + + + + e + + + + ́ + + publié + + + + + + + + + + + + + + q + + + + u + + + + e + + + + l + + + + q + + + + u + + + + e + + + + s + + quelques + + + + + + + + + + + + + + f + + + + a + + + + i + + + + t + + + + s + + faits + + + + + + + + + + + + + + s + + + + u + + + + r + + sur + + + + + + + + + + + + + + l + + + + e + + + + s + + les + + + + + + + + + + + + + + p + + + + o + + + + u + + + + l + + + + p + + + + e + + + + s + + + + , + + poulpes, + + + + + + + + + + + + + + l + + + + e + + + + u + + + + r + + leur + + publié quelques faits sur les poulpes, leur + + + + + + + + + h + + + + i + + + + s + + + + t + + + + o + + + + i + + + + r + + + + e + + histoire + + + + + + + + + + + + + + n + + + + o + + + + u + + + + s + + nous + + + + + + + + + + + + + + e + + + + s + + + + t + + est + + + + + + + + + + + + + + e + + + + n + + + + c + + + + o + + + + r + + + + e + + encore + + + + + + + + + + + + + + m + + + + a + + + + l + + mal + + + + + + + + + + + + + + c + + + + o + + + + n + + + + n + + + + u + + + + e + + + + , + + connue, + + + + + + + + + + + + + + e + + + + t + + et + + + + + + + + + + + + + + o + + + + n + + on + + histoire nous est encore mal connue, et on + + + + + + + + + n + + + + e + + ne + + + + + + + + + + + + + + p + + + + e + + + + u + + + + t + + peut + + + + + + + + + + + + + + d + + + + e + + + + v + + + + i + + + + n + + + + e + + + + r + + deviner + + + + + + + + + + + + + + p + + + + a + + + + r + + par + + + + + + + + + + + + + + q + + + + u + + + + e + + + + l + + + + l + + + + e + + quelle + + + + + + + + + + + + + + f + + + + a + + + + t + + + + a + + + + l + + + + i + + + + t + + + + e + + + + ́ + + fatalité + + + + + + + + + + + + + + u + + + + n + + un + + + + + + + + + + + + + + m + + + + o + + + + l + + + + ¬ + + mol¬ + + ne peut deviner par quelle fatalité un mol¬ + + + + + + + + + l + + + + u + + + + s + + + + q + + + + u + + + + e + + lusque + + + + + + + + + + + + + + a + + + + u + + + + s + + + + s + + + + i + + aussi + + + + + + + + + + + + + + r + + + + e + + + + m + + + + a + + + + r + + + + q + + + + u + + + + a + + + + b + + + + l + + + + e + + remarquable + + + + + + + + + + + + + + a + + a + + + + + + + + + + + + + + e + + + + ́ + + + + t + + + + e + + + + ́ + + été + + + + + + + + + + + + + + s + + + + i + + si + + + + + + + + + + + + + + p + + + + e + + + + u + + peu + + + + + + + + + + + + + + l + + + + + + + + o + + + + b + + + + j + + + + e + + + + t + + l’objet + + lusque aussi remarquable a été si peu l’objet + + + + + + + + + d + + + + e + + + + s + + des + + + + + + + + + + + + + + o + + + + b + + + + s + + + + e + + + + r + + + + v + + + + a + + + + t + + + + i + + + + o + + + + n + + + + s + + + + ; + + observations; + + + + + + + + + + + + + + c + + + + a + + + + r + + car + + + + + + + + + + + + + + n + + + + o + + + + u + + + + s + + nous + + + + + + + + + + + + + + a + + + + v + + + + o + + + + n + + + + s + + avons + + + + + + + + + + + + + + v + + + + u + + vu + + + + + + + + + + + + + + q + + + + u + + + + e + + + + , + + que, + + des observations; car nous avons vu que, + + + + + + + + + d + + + + e + + + + p + + + + u + + + + i + + + + s + + depuis + + + + + + + + + + + + + + A + + + + r + + + + i + + + + s + + + + t + + + + o + + + + t + + + + e + + + + , + + Aristote, + + + + + + + + + + + + + + o + + + + n + + on + + + + + + + + + + + + + + n + + + + + + + + a + + n’a + + + + + + + + + + + + + + p + + + + r + + + + e + + + + s + + + + q + + + + u + + + + e + + presque + + + + + + + + + + + + + + p + + + + o + + + + i + + + + n + + + + t + + point + + + + + + + + + + + + + + a + + + + j + + + + o + + + + u + + + + t + + + + e + + + + ́ + + ajouté + + depuis Aristote, on n’a presque point ajouté + + + + + + + + + a + + + + ̀ + + + + + + + + + + + + + + + + c + + + + e + + ce + + + + + + + + + + + + + + q + + + + u + + + + e + + + + - + + + + c + + + + e + + + + - + + + + p + + + + h + + + + i + + + + l + + + + o + + + + s + + + + o + + + + p + + + + h + + + + e + + que-ce-philosophe + + + + + + + + + + + + + + a + + a + + + + + + + + + + + + + + e + + + + ́ + + + + c + + + + r + + + + i + + + + t + + écrit + + + + + + + + + + + + + + s + + + + u + + + + r + + sur + + + + + + + + + + + + + + c + + + + e + + + + s + + ces + + + + + + + + + + + + + + a + + + + n + + + + i + + + + ¬ + + ani¬ + + à ce que-ce-philosophe a écrit sur ces ani¬ + + + + + + + + + m + + + + a + + + + u + + + + x + + + + . + + maux. + + + + + + + + + + + + + + E + + + + n + + En + + + + + + + + + + + + + + 1 + + + + 7 + + + + 5 + + + + 2 + + + + , + + 1752, + + + + + + + + + + + + + + B + + + + e + + + + r + + + + n + + + + a + + + + r + + + + d + + Bernard + + + + + + + + + + + + + + d + + + + e + + de + + + + + + + + + + + + + + F + + + + i + + + + s + + + + c + + + + h + + + + e + + + + r + + Fischer + + + + + + + + + + + + + + p + + + + u + + + + b + + + + l + + + + i + + + + a + + publia + + maux. En 1752, Bernard de Fischer publia + + + + + + + + + u + + + + n + + un + + + + + + + + + + + + + + M + + + + e + + + + ́ + + + + m + + + + o + + + + i + + + + ̈ + + + + r + + + + e + + Mémoïre + + + + + + + + + + + + + + ( + + + + 1 + + + + ) + + (1) + + + + + + + + + + + + + + s + + + + u + + + + r + + sur + + + + + + + + + + + + + + u + + + + n + + un + + + + + + + + + + + + + + p + + + + o + + + + u + + + + l + + + + p + + + + e + + + + r + + poulper + + + + + + + + + + + + + + q + + + + u + + + + i + + qui + + + + + + + + + + + + + + v + + + + e + + + + n + + + + o + + + + i + + + + t + + venoit + + un Mémoïre (1) sur un poulper qui venoit + + + + + + + + + d + + + + e + + de + + + + + + + + + + + + + + l + + + + a + + la + + + + + + + + + + + + + + G + + + + r + + + + e + + + + ̀ + + + + c + + + + e + + + + , + + Grèce, + + + + + + + + + + + + + + e + + + + t + + et + + + + + + + + + + + + + + q + + + + u + + + + e + + que + + + + + + + + + + + + + + n + + + + o + + + + u + + + + s + + nous + + + + + + + + + + + + + + n + + + + e + + ne + + + + + + + + + + + + + + p + + + + o + + + + u + + + + v + + + + o + + + + n + + + + s + + pouvons + + + + + + + + + + + + + + m + + + + e + + + + ́ + + + + ¬ + + mé¬ + + de la Grèce, et que nous ne pouvons mé¬ + + + + + + + + + c + + + + o + + + + n + + + + n + + + + o + + + + i + + + + ̂ + + + + t + + + + r + + + + e + + connoître + + + + + + + + + + + + + + p + + + + o + + + + u + + + + r + + pour + + + + + + + + + + + + + + l + + + + e + + le + + + + + + + + + + + + + + p + + + + o + + + + u + + + + l + + + + p + + + + e + + poulpe + + + + + + + + + + + + + + c + + + + o + + + + m + + + + m + + + + u + + + + n + + + + . + + commun. + + + + + + + + + + + + + + C + + + + e + + Ce + + + + + + + + + + + + + + m + + + + e + + + + ́ + + + + ¬ + + mé¬ + + connoître pour le poulpe commun. Ce mé¬ + + + + + + + + + 1 + + + + 1 + + + + , + + 11, + + + + + + + + + + + + + + i + + + + n + + + + l + + + + . + + inl. + + 11, inl. + + + + + + + + + ( + + + + 1 + + + + ) + + (1) + + + + + + + + + + + + + + J + + + + . + + J. + + + + + + + + + + + + + + B + + + + e + + + + r + + + + n + + + + . + + Bern. + + + + + + + + + + + + + + d + + + + e + + de + + + + + + + + + + + + + + F + + + + i + + + + s + + + + c + + + + h + + + + e + + + + r + + + + , + + Fischer, + + + + + + + + + + + + + + d + + + + e + + de + + + + + + + + + + + + + + k + + + + r + + + + a + + + + k + + + + a + + + + t + + + + i + + + + z + + + + a + + + + , + + krakatiza, + + + + + + + + + + + + + + o + + + + b + + + + s + + + + e + + + + r + + + + v + + + + . + + observ. + + + + + + + + + + + + + + 7 + + + + 9 + + + + , + + 79, + + (1) J. Bern. de Fischer, de krakatiza, observ. 79, + + + + + + + + + p + + + + a + + + + g + + + + . + + pag. + + + + + + + + + + + + + + 3 + + + + 3 + + + + 5 + + + + . + + 335. + + + + + + + + + + + + + + A + + + + c + + + + t + + + + a + + Acta + + + + + + + + + + + + + + n + + + + a + + + + t + + + + u + + + + r + + + + c + + + + e + + naturce + + + + + + + + + + + + + + c + + + + u + + + + r + + + + i + + + + o + + + + s + + + + o + + + + r + + + + u + + + + m + + + + , + + curiosorum, + + + + + + + + + + + + + + v + + + + o + + + + l + + + + - + + vol- + + + + + + + + + + + + + + I + + + + X + + + + , + + IX, + + + + + + + + + + + + + + p + + + + l + + + + . + + pl. + + + + + + + + + + + + + + I + + + + X + + + + , + + IX, + + pag. 335. Acta naturce curiosorum, vol- IX, pl. IX, + + + + + + + + + f + + + + i + + + + g + + + + . + + fig. + + + + + + + + + + + + + + 1 + + + + ; + + 1; + + + + + + + + + + + + + + e + + + + t + + et + + + + + + + + + + + + + + p + + + + l + + + + . + + pl. + + + + + + + + + + + + + + x + + + + I + + + + i + + + + I + + + + , + + xIiI, + + + + + + + + + + + + + + f + + + + i + + + + g + + + + . + + fig. + + + + + + + + + + + + + + 1 + + + + . + + 1. + + fig. 1; et pl. xIiI, fig. 1. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/ketos_ocr/test-data/input_binarized_tiff_ocr_output.alto b/tools/ketos_ocr/test-data/input_binarized_tiff_ocr_output.alto new file mode 100644 index 0000000000..4ada95a66e --- /dev/null +++ b/tools/ketos_ocr/test-data/input_binarized_tiff_ocr_output.alto @@ -0,0 +1,6487 @@ + + + + pixel + + input.tiff + + + contentGeneration + Text line recognition + text_direction: horizontal-tb; models: /home/ivo/projects/ufr/galaxy/galaxytools/tools/kraken_ocr/test-data/pretrained_mlmodels_various_sources/ocr/catmus-print-fondue-large.mlmodel; pad: 16; bidi_reordering: True + + kraken + 7.0.2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file