From 4ba0e43f35ae936cc390f4f05170b1452265645e Mon Sep 17 00:00:00 2001
From: Yoann Schneider <yschneider@teklia.com>
Date: Tue, 8 Nov 2022 22:56:47 +0100
Subject: [PATCH] refactoring + packaging

---
 .../generic_dataset_formatter.py              |   35 -
 .../dataset_formatters/read2016_formatter.py  |  509 -------
 .../dataset_formatters/rimes_formatter.py     |  257 ----
 .../dataset_formatters/simara_formatter.py    |   35 -
 Datasets/dataset_formatters/utils_dataset.py  |   36 -
 Fonts/list_fonts_read_2016.txt                |   41 -
 Fonts/list_fonts_rimes.txt                    |   95 --
 LICENSE_CECILL-C.md                           |  517 -------
 OCR/line_OCR/ctc/main_line_ctc.py             |   33 -
 OCR/line_OCR/ctc/main_syn_line.py             |   33 -
 OCR/line_OCR/ctc/models_line_ctc.py           |   33 -
 OCR/line_OCR/ctc/trainer_line_ctc.py          |   33 -
 OCR/ocr_manager.py                            |   35 -
 README.md                                     |   79 -
 basic/generic_dataset_manager.py              |   34 -
 basic/generic_training_manager.py             |   34 -
 basic/metric_manager.py                       |   35 -
 basic/scheduler.py                            |   34 -
 basic/transforms.py                           |   33 -
 basic/utils.py                                |   33 -
 dan/cli.py                                    |   32 +
 dan/datasets/__init__.py                      |    0
 dan/datasets/extract/__init__.py              |    0
 dan/datasets/extract/arkindex_utils.py        |   67 +
 dan/datasets/extract/extract_from_arkindex.py |  135 ++
 dan/datasets/extract/utils.py                 |   50 +
 dan/datasets/format/__init__.py               |    0
 dan/datasets/format/generic.py                |   91 ++
 dan/datasets/format/simara.py                 |  108 ++
 dan/datasets/utils.py                         |   10 +
 dan/decoder.py                                |    3 -
 dan/manager/__init__.py                       |    0
 dan/manager/dataset.py                        |  441 ++++++
 dan/manager/metrics.py                        |  522 +++++++
 dan/manager/ocr.py                            |  640 ++++++++
 dan/manager/training.py                       | 1291 +++++++++++++++++
 dan/manager/utils.py                          |   81 ++
 dan/models.py                                 |   35 -
 dan/ocr/__init__.py                           |    0
 dan/ocr/document/__init__.py                  |    0
 dan/ocr/document/train.py                     |  234 +++
 dan/ocr/line/__init__.py                      |    0
 dan/ocr/line/generate_synthetic.py            |  165 +++
 dan/ocr/line/model_utils.py                   |   22 +
 dan/ocr/line/train.py                         |  207 +++
 dan/ocr/line/utils.py                         |   96 ++
 dan/ocr/train.py                              |   14 +
 dan/ocr/utils.py                              |   17 +
 dan/ocr_utils.py                              |   53 -
 dan/post_processing.py                        |  232 +--
 dan/predict.py                                |    2 +-
 dan/schedulers.py                             |   47 +
 dan/transforms.py                             |  510 +++++++
 dan/utils.py                                  |  149 ++
 images/visual.png                             |  Bin 0 -> 134135 bytes
 images/visual_slanted_lines.png               |  Bin 0 -> 213318 bytes
 56 files changed, 4931 insertions(+), 2297 deletions(-)
 delete mode 100644 Datasets/dataset_formatters/read2016_formatter.py
 delete mode 100644 Datasets/dataset_formatters/rimes_formatter.py
 delete mode 100644 Fonts/list_fonts_read_2016.txt
 delete mode 100644 Fonts/list_fonts_rimes.txt
 delete mode 100644 LICENSE_CECILL-C.md
 create mode 100644 dan/cli.py
 create mode 100644 dan/datasets/__init__.py
 create mode 100644 dan/datasets/extract/__init__.py
 create mode 100644 dan/datasets/extract/arkindex_utils.py
 create mode 100644 dan/datasets/extract/extract_from_arkindex.py
 create mode 100644 dan/datasets/extract/utils.py
 create mode 100644 dan/datasets/format/__init__.py
 create mode 100644 dan/datasets/format/generic.py
 create mode 100644 dan/datasets/format/simara.py
 create mode 100644 dan/datasets/utils.py
 create mode 100644 dan/manager/__init__.py
 create mode 100644 dan/manager/dataset.py
 create mode 100644 dan/manager/metrics.py
 create mode 100644 dan/manager/ocr.py
 create mode 100644 dan/manager/training.py
 create mode 100644 dan/manager/utils.py
 create mode 100644 dan/ocr/__init__.py
 create mode 100644 dan/ocr/document/__init__.py
 create mode 100644 dan/ocr/document/train.py
 create mode 100644 dan/ocr/line/__init__.py
 create mode 100644 dan/ocr/line/generate_synthetic.py
 create mode 100644 dan/ocr/line/model_utils.py
 create mode 100644 dan/ocr/line/train.py
 create mode 100644 dan/ocr/line/utils.py
 create mode 100644 dan/ocr/train.py
 create mode 100644 dan/ocr/utils.py
 delete mode 100644 dan/ocr_utils.py
 create mode 100644 dan/schedulers.py
 create mode 100644 dan/transforms.py
 create mode 100644 dan/utils.py
 create mode 100644 images/visual.png
 create mode 100644 images/visual_slanted_lines.png

diff --git a/Datasets/dataset_formatters/generic_dataset_formatter.py b/Datasets/dataset_formatters/generic_dataset_formatter.py
index e474ed45..ae55af02 100644
--- a/Datasets/dataset_formatters/generic_dataset_formatter.py
+++ b/Datasets/dataset_formatters/generic_dataset_formatter.py
@@ -1,38 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
 import os
 import shutil
 import tarfile
diff --git a/Datasets/dataset_formatters/read2016_formatter.py b/Datasets/dataset_formatters/read2016_formatter.py
deleted file mode 100644
index 5a0b0452..00000000
--- a/Datasets/dataset_formatters/read2016_formatter.py
+++ /dev/null
@@ -1,509 +0,0 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
-from Datasets.dataset_formatters.generic_dataset_formatter import OCRDatasetFormatter
-import os
-import numpy as np
-from PIL import Image
-import xml.etree.ElementTree as ET
-
-
-# Layout begin-token to end-token
-SEM_MATCHING_TOKENS = {
-            "â“‘": "â’·",  # paragraph (body)
-            "ⓐ": "Ⓐ",  # annotation
-            "ⓟ": "Ⓟ",  # page
-            "ⓝ": "Ⓝ",  # page number
-            "ⓢ": "Ⓢ",  # section (=linked annotation + body)
-        }
-
-
-class READ2016DatasetFormatter(OCRDatasetFormatter):
-    def __init__(self, level, set_names=["train", "valid", "test"], dpi=150, end_token=True, sem_token=True):
-        super(READ2016DatasetFormatter, self).__init__("READ_2016", level, "_sem" if sem_token else "", set_names)
-
-        self.map_datasets_files.update({
-            "READ_2016": {
-                # (350 for train, 50 for validation and 50 for test)
-                "page": {
-                    "arx_files": ["Test-ICFHR-2016.tgz", "Train-And-Val-ICFHR-2016.tgz"],
-                    "needed_files": [],
-                    "format_function": self.format_read2016_page,
-                },
-                # (169 for train, 24 for validation and 24 for test)
-                "double_page": {
-                    "arx_files": ["Test-ICFHR-2016.tgz", "Train-And-Val-ICFHR-2016.tgz"],
-                    "needed_files": [],
-                    "format_function": self.format_read2016_double_page,
-                }
-            }
-        })
-        self.dpi = dpi
-        self.end_token = end_token
-        self.sem_token = sem_token
-        self.matching_token = SEM_MATCHING_TOKENS
-
-    def init_format(self):
-        super().init_format()
-        os.rename(os.path.join(self.temp_fold, "PublicData", "Training"), os.path.join(self.temp_fold, "train"))
-        os.rename(os.path.join(self.temp_fold, "PublicData", "Validation"), os.path.join(self.temp_fold, "valid"))
-        os.rename(os.path.join(self.temp_fold, "Test-ICFHR-2016"), os.path.join(self.temp_fold, "test"))
-        os.rmdir(os.path.join(self.temp_fold, "PublicData"))
-        for set_name in ["train", "valid", ]:
-            for filename in os.listdir(os.path.join(self.temp_fold, set_name, "Images")):
-                filepath = os.path.join(self.temp_fold, set_name, "Images", filename)
-                if os.path.isfile(filepath):
-                    os.rename(filepath, os.path.join(self.temp_fold, set_name, filename))
-            os.rmdir(os.path.join(self.temp_fold, set_name, "Images"))
-
-    def preformat_read2016(self):
-        """
-        Extract all information from READ 2016 dataset and correct some mistakes
-        """
-        def coord_str_to_points(coord_str):
-            """
-            Extract bounding box from coord string
-            """
-            points = coord_str.split(" ")
-            x_points, y_points = list(), list()
-            for p in points:
-                y_points.append(int(p.split(",")[1]))
-                x_points.append(int(p.split(",")[0]))
-            top, bottom, left, right = np.min(y_points), np.max(y_points), np.min(x_points), np.max(x_points)
-            return {
-                "left": left,
-                "bottom": bottom,
-                "top": top,
-                "right": right
-            }
-
-        def baseline_str_to_points(coord_str):
-            """
-            Extract bounding box from baseline string
-            """
-            points = coord_str.split(" ")
-            x_points, y_points = list(), list()
-            for p in points:
-                y_points.append(int(p.split(",")[1]))
-                x_points.append(int(p.split(",")[0]))
-            top, bottom, left, right = np.min(y_points), np.max(y_points), np.min(x_points), np.max(x_points)
-            return {
-                "left": left,
-                "bottom": bottom,
-                "top": top,
-                "right": right
-            }
-
-        dataset = {
-            "train": list(),
-            "valid": list(),
-            "test": list(),
-        }
-        for set_name in ["train", "valid", "test"]:
-            img_fold_path = os.path.join(self.temp_fold, set_name)
-            xml_fold_path = os.path.join(self.temp_fold, set_name, "page")
-            for xml_file_name in sorted(os.listdir(xml_fold_path)):
-                if xml_file_name.split(".")[-1] != "xml":
-                    continue
-                filename = xml_file_name.split(".")[0]
-                img_path = os.path.join(img_fold_path, filename + ".JPG")
-                xml_file_path = os.path.join(xml_fold_path, xml_file_name)
-                xml_root = ET.parse(xml_file_path).getroot()
-                pages = xml_root.findall("{http://schema.primaresearch.org/PAGE/gts/pagecontent/2013-07-15}Page")
-                for page in pages:
-                    page_dict = {
-                        "label": list(),
-                        "text_regions": list(),
-                        "img_path": img_path,
-                        "width": int(page.attrib["imageWidth"]),
-                        "height": int(page.attrib["imageHeight"])
-                    }
-                    text_regions = page.findall("{http://schema.primaresearch.org/PAGE/gts/pagecontent/2013-07-15}TextRegion")
-                    for text_region in text_regions:
-                        text_region_dict = {
-                            "label": list(),
-                            "lines": list(),
-                            "coords": coord_str_to_points(text_region.find("{http://schema.primaresearch.org/PAGE/gts/pagecontent/2013-07-15}Coords").attrib["points"])
-                        }
-                        text_lines = text_region.findall("{http://schema.primaresearch.org/PAGE/gts/pagecontent/2013-07-15}TextLine")
-                        for text_line in text_lines:
-                            text_line_label = text_line.find("{http://schema.primaresearch.org/PAGE/gts/pagecontent/2013-07-15}TextEquiv")\
-                                .find("{http://schema.primaresearch.org/PAGE/gts/pagecontent/2013-07-15}Unicode")\
-                                .text
-                            if text_line_label is None and \
-                                    text_line.attrib["id"] not in ["line_a5f4ab4e-2ea0-4c65-840c-4a89b04bd477",
-                                                                   "line_e1288df8-8a0d-40df-be91-4b4a332027ec",
-                                                                   "line_455330f3-9e27-4340-ae86-9d6c448dc091",
-                                                                   "line_ecbbccee-e8c2-495d-ac47-0aff93f3d9ac",
-                                                                   "line_e918616d-64f8-43d2-869c-f687726212be",
-                                                                   "line_ebd8f850-1da5-45b1-b59c-9349497ecc8e",
-                                                                   "line_816fb2ce-06b0-4e00-bb28-10c8b9c367f2"]:
-                                print("ignored null line{}".format(page_dict["img_path"]))
-                                continue
-                            if text_line.attrib["id"] == "line_816fb2ce-06b0-4e00-bb28-10c8b9c367f2":
-                                label = "16"
-                            elif text_line.attrib["id"] == "line_a5f4ab4e-2ea0-4c65-840c-4a89b04bd477":
-                                label = "108"
-                            elif text_line.attrib["id"] == "line_e1288df8-8a0d-40df-be91-4b4a332027ec":
-                                label = "196"
-                            elif text_line.attrib["id"] == "line_455330f3-9e27-4340-ae86-9d6c448dc091":
-                                label = "199"
-                            elif text_line.attrib["id"] == "line_ecbbccee-e8c2-495d-ac47-0aff93f3d9ac":
-                                label = "202"
-                            elif text_line.attrib["id"] == "line_e918616d-64f8-43d2-869c-f687726212be":
-                                label = "214"
-                            elif text_line.attrib["id"] == "line_ebd8f850-1da5-45b1-b59c-9349497ecc8e":
-                                label = "216"
-                            else:
-                                label = self.format_text_label(text_line_label)
-                            line_baseline = text_line.find("{http://schema.primaresearch.org/PAGE/gts/pagecontent/2013-07-15}Baseline")
-                            line_coord = coord_str_to_points(text_line.find("{http://schema.primaresearch.org/PAGE/gts/pagecontent/2013-07-15}Coords").attrib["points"])
-                            text_line_dict = {
-                                "label": label,
-                                "coords": line_coord,
-                                "baseline_coords": baseline_str_to_points(line_baseline.attrib["points"]) if line_baseline is not None else line_coord
-                            }
-                            text_line_dict["label"] = text_line_dict["label"]
-                            text_region_dict["label"].append(text_line_dict["label"])
-                            text_region_dict["lines"].append(text_line_dict)
-                        if text_region_dict["label"] == list():
-                            print("ignored null region {}".format(page_dict["img_path"]))
-                            continue
-                        text_region_dict["label"] = self.format_text_label("\n".join(text_region_dict["label"]))
-                        text_region_dict["baseline_coords"] = {
-                            "left": min([line["baseline_coords"]["left"] for line in text_region_dict["lines"]]),
-                            "right": max([line["baseline_coords"]["right"] for line in text_region_dict["lines"]]),
-                            "bottom": max([line["baseline_coords"]["bottom"] for line in text_region_dict["lines"]]),
-                            "top": min([line["baseline_coords"]["top"] for line in text_region_dict["lines"]]),
-                        }
-                        page_dict["label"].append(text_region_dict["label"])
-                        page_dict["text_regions"].append(text_region_dict)
-                    page_dict["label"] = self.format_text_label("\n".join(page_dict["label"]))
-                    dataset[set_name].append(page_dict)
-
-        return dataset
-
-    def format_read2016_page(self):
-        """
-        Format the READ 2016 dataset at single-page level
-        """
-        dataset = self.preformat_read2016()
-        for set_name in ["train", "valid", "test"]:
-            for i, page in enumerate(dataset[set_name]):
-                new_img_name = "{}_{}.jpeg".format(set_name, i)
-                new_img_path = os.path.join(self.target_fold_path, set_name, new_img_name)
-                self.load_resize_save(page["img_path"], new_img_path, 300, self.dpi)
-                new_label, sorted_text_regions, nb_cols, side = self.sort_text_regions(page["text_regions"], page["width"])
-                paragraphs = list()
-                for paragraph in page["text_regions"]:
-                    paragraph_label = {
-                        "label": paragraph["label"],
-                        "lines": list(),
-                        "mode": paragraph["mode"]
-                    }
-                    for line in paragraph["lines"]:
-                        paragraph_label["lines"].append({
-                            "text": line["label"],
-                            "top": line["coords"]["top"],
-                            "bottom": line["coords"]["bottom"],
-                            "left": line["coords"]["left"],
-                            "right": line["coords"]["right"],
-                        })
-                        paragraph_label["lines"][-1] = self.adjust_coord_ratio(paragraph_label["lines"][-1], self.dpi / 300)
-                    paragraph_label["top"] = min([line["top"] for line in paragraph_label["lines"]])
-                    paragraph_label["bottom"] = max([line["bottom"] for line in paragraph_label["lines"]])
-                    paragraph_label["left"] = min([line["left"] for line in paragraph_label["lines"]])
-                    paragraph_label["right"] = max([line["right"] for line in paragraph_label["lines"]])
-                    paragraphs.append(paragraph_label)
-
-                if self.sem_token:
-                    if self.end_token:
-                        new_label = "ⓟ" + new_label + "Ⓟ"
-                    else:
-                        new_label = "ⓟ" + new_label
-
-                page_label = {
-                    "text": new_label,
-                    "paragraphs": paragraphs,
-                    "nb_cols": nb_cols,
-                    "side": side,
-                    "top": min([pg["top"] for pg in paragraphs]),
-                    "bottom": max([pg["bottom"] for pg in paragraphs]),
-                    "left": min([pg["left"] for pg in paragraphs]),
-                    "right": max([pg["right"] for pg in paragraphs]),
-                    "page_width": int(np.array(Image.open(page["img_path"])).shape[1] * self.dpi / 300)
-                }
-
-                self.gt[set_name][new_img_name] = {
-                    "text": new_label,
-                    "nb_cols": nb_cols,
-                    "pages": [page_label, ],
-                }
-                self.charset = self.charset.union(set(page["label"]))
-        self.add_tokens_in_charset()
-
-    def format_read2016_double_page(self):
-        """
-        Format the READ 2016 dataset at double-page level
-        """
-        dataset = self.preformat_read2016()
-        for set_name in ["train", "valid", "test"]:
-            for i, page in enumerate(dataset[set_name]):
-                dataset[set_name][i]["label"], dataset[set_name][i]["text_regions"], dataset[set_name][i]["nb_cols"], dataset[set_name][i]["side"] = \
-                    self.sort_text_regions(dataset[set_name][i]["text_regions"], dataset[set_name][i]["width"])
-        dataset = self.group_by_page_number(dataset)
-        for set_name in ["train", "valid", "test"]:
-            i = 0
-            for document in dataset[set_name]:
-                if len(document["pages"]) != 2:
-                    continue
-                new_img_name = "{}_{}.jpeg".format(set_name, i)
-                new_img_path = os.path.join(self.target_fold_path, set_name, new_img_name)
-                img_left = np.array(Image.open(document["pages"][0]["img_path"]))
-                img_right = np.array(Image.open(document["pages"][1]["img_path"]))
-                left_page_width = img_left.shape[1]
-                right_page_width = img_right.shape[1]
-                img = np.concatenate([img_left, img_right], axis=1)
-                img = self.resize(img, 300, self.dpi)
-                img = Image.fromarray(img)
-                img.save(new_img_path)
-                pages = list()
-                for page_id, page in enumerate(document["pages"]):
-                    page_label = {
-                        "text": page["label"],
-                        "paragraphs": list(),
-                        "nb_cols": page["nb_cols"]
-                    }
-                    for paragraph in page["text_regions"]:
-                        paragraph_label = {
-                            "label": paragraph["label"],
-                            "lines": list(),
-                            "mode": paragraph["mode"]
-                        }
-                        for line in paragraph["lines"]:
-                            paragraph_label["lines"].append({
-                                "text": line["label"],
-                                "top": line["coords"]["top"],
-                                "bottom": line["coords"]["bottom"],
-                                "left": line["coords"]["left"] if page_id == 0 else line["coords"]["left"] + left_page_width,
-                                "right": line["coords"]["right"]if page_id == 0 else line["coords"]["right"] + left_page_width,
-                            })
-                            paragraph_label["lines"][-1] = self.adjust_coord_ratio(paragraph_label["lines"][-1], self.dpi / 300)
-                        paragraph_label["top"] = min([line["top"] for line in paragraph_label["lines"]])
-                        paragraph_label["bottom"] = max([line["bottom"] for line in paragraph_label["lines"]])
-                        paragraph_label["left"] = min([line["left"] for line in paragraph_label["lines"]])
-                        paragraph_label["right"] = max([line["right"] for line in paragraph_label["lines"]])
-                        page_label["paragraphs"].append(paragraph_label)
-                    page_label["top"] = min([pg["top"] for pg in page_label["paragraphs"]])
-                    page_label["bottom"] = max([pg["bottom"] for pg in page_label["paragraphs"]])
-                    page_label["left"] = min([pg["left"] for pg in page_label["paragraphs"]])
-                    page_label["right"] = max([pg["right"] for pg in page_label["paragraphs"]])
-                    page_label["page_width"] = int(left_page_width * self.dpi / 300) if page_id == 0 else int(right_page_width * self.dpi / 300)
-                    page_label["side"] = page["side"]
-                    pages.append(page_label)
-
-                label_left = document["pages"][0]["label"]
-                label_right = document["pages"][1]["label"]
-                if self.sem_token:
-                    if self.end_token:
-                        document_label = "ⓟ" + label_left + "Ⓟ" + "ⓟ" + label_right + "Ⓟ"
-                    else:
-                        document_label = "ⓟ" + label_left + "ⓟ" + label_right
-                else:
-                    document_label = label_left + "\n" + label_right
-                self.gt[set_name][new_img_name] = {
-                    "text": document_label,
-                    "nb_cols": document["pages"][0]["nb_cols"] + document["pages"][1]["nb_cols"],
-                    "pages": pages,
-                }
-                self.charset = self.charset.union(set(document_label))
-                i += 1
-        self.add_tokens_in_charset()
-
-    def add_tokens_in_charset(self):
-        """
-        Add layout tokens to the charset
-        """
-        if self.sem_token:
-            if self.end_token:
-                self.charset = self.charset.union(set("ⓢⓑⓐⓝⓈⒷⒶⓃⓟⓅ"))
-            else:
-                self.charset = self.charset.union(set("ⓢⓑⓐⓝⓟ"))
-
-    def group_by_page_number(self, dataset):
-        """
-        Group page data by pairs of successive pages
-        """
-        new_dataset = {
-            "train": dict(),
-            "valid": dict(),
-            "test": dict()
-        }
-        for set_name in ["train", "valid", "test"]:
-            for page in dataset[set_name]:
-                page_num = int(page["text_regions"][0]["label"].replace(".", "").replace(" ", "").replace("ⓝ", "").replace("Ⓝ", ""))
-                page["page_num"] = page_num
-                if page_num in new_dataset[set_name]:
-                    new_dataset[set_name][page_num].append(page)
-                else:
-                    new_dataset[set_name][page_num] = [page, ]
-            new_dataset[set_name] = [{"pages": new_dataset[set_name][key],
-                                      "page_num": new_dataset[set_name][key][0]["page_num"]
-                                      } for key in new_dataset[set_name]]
-        return new_dataset
-
-    def update_label(self, label, start_token):
-        """
-        Add layout token to text region transcription
-        """
-        if self.sem_token:
-            if self.end_token:
-                return start_token + label + self.matching_token[start_token]
-            else:
-                return start_token + label
-        return label
-
-    def merge_group_tr(self, group, text_region):
-        group["text_regions"].append(text_region)
-        group["coords"]["top"] = min([tr["coords"]["top"] for tr in group["text_regions"]])
-        group["coords"]["bottom"] = max([tr["coords"]["bottom"] for tr in group["text_regions"]])
-        group["coords"]["left"] = min([tr["coords"]["left"] for tr in group["text_regions"]])
-        group["coords"]["right"] = max([tr["coords"]["right"] for tr in group["text_regions"]])
-        group["baseline_coords"]["top"] = min([tr["baseline_coords"]["top"] for tr in group["text_regions"]])
-        group["baseline_coords"]["bottom"] = max([tr["baseline_coords"]["bottom"] for tr in group["text_regions"]])
-        group["baseline_coords"]["left"] = min([tr["baseline_coords"]["left"] for tr in group["text_regions"]])
-        group["baseline_coords"]["right"] = max([tr["baseline_coords"]["right"] for tr in group["text_regions"]])
-
-    def is_annotation_alone(self, groups, page_width):
-        for group in groups:
-            if all([tr["coords"]["right"] < page_width / 2 and not tr["label"].replace(".", "").replace(" ", "").isdigit() for tr in group["text_regions"]]):
-                return True
-        return False
-
-    def sort_text_regions(self, text_regions, page_width):
-        """
-        Establish reading order based on paragraph pixel position:
-        page number then section by section: first all annotations, then associated body
-        """
-        nb_cols = 1
-        groups = list()
-        for text_region in text_regions:
-            added_in_group = False
-            temp_label = text_region["label"].replace(".", "").replace(" ", "")
-            if len(temp_label) <= 4 and temp_label.isdigit():
-                groups.append({
-                    "coords": text_region["coords"].copy(),
-                    "baseline_coords": text_region["baseline_coords"].copy(),
-                    "text_regions": [text_region, ]
-                })
-                groups[-1]["coords"]["top"] = 0
-                groups[-1]["coords"]["bottom"] = 0
-                groups[-1]["baseline_coords"]["top"] = 0
-                groups[-1]["baseline_coords"]["bottom"] = 0
-                continue
-            for group in groups:
-                if not (group["baseline_coords"]["bottom"] <= text_region["baseline_coords"]["top"] or
-                        group["baseline_coords"]["top"] >= text_region["baseline_coords"]["bottom"] or
-                        (text_region["coords"]["right"]-text_region["coords"]["left"] > 0.4*page_width and
-                         group["coords"]["right"]-group["coords"]["left"] > 0.4*page_width)):
-                    self.merge_group_tr(group, text_region)
-                    added_in_group = True
-                    break
-
-            if not added_in_group:
-                groups.append({
-                    "coords": text_region["coords"].copy(),
-                    "baseline_coords": text_region["baseline_coords"].copy(),
-                    "text_regions": [text_region, ]
-                })
-        while self.is_annotation_alone(groups, page_width):
-            new_groups = list()
-            annotations_groups = list()
-            body_groups = list()
-            for i in range(len(groups)):
-                group = groups[i]
-                if all([tr["label"].replace(".", "").replace(" ","").isdigit() for tr in group["text_regions"]]):
-                    new_groups.append(group)
-                    continue
-                if all([tr["coords"]["right"] < page_width / 2 for tr in group["text_regions"]]):
-                    annotations_groups.append(group)
-                    continue
-                body_groups.append(group)
-            for ag in annotations_groups:
-                dist = [min([abs(ag["coords"]["bottom"]-g["coords"]["top"]), abs(ag["coords"]["top"]-g["coords"]["bottom"])]) for g in body_groups]
-                index = np.argmin(dist)
-                for tr in ag["text_regions"]:
-                    self.merge_group_tr(body_groups[index], tr)
-            new_groups.extend(body_groups)
-            groups = new_groups
-        ordered_groups = sorted(groups, key=lambda g: g["coords"]["top"])
-        sorted_text_regions = list()
-        for group in ordered_groups:
-            text_regions = group["text_regions"]
-            if len(text_regions) == 1 and text_regions[0]["label"].replace(".", "").replace(" ", "").isdigit():
-                side = "right" if text_regions[0]["coords"]["left"] > page_width / 2 else "left"
-                sorted_text_regions.append(text_regions[0])
-                sorted_text_regions[-1]["mode"] = "page_number"
-                sorted_text_regions[-1]["label"] = self.update_label(sorted_text_regions[-1]["label"], "ⓝ")
-            else:
-                left = [tr for tr in group["text_regions"] if tr["coords"]["right"] < page_width / 2]
-                right = [tr for tr in group["text_regions"] if tr["coords"]["right"] >= page_width / 2]
-                nb_cols = max(2 if len(left) > 0 else 1, nb_cols)
-                for i, text_region in enumerate(sorted(left, key=lambda tr: tr["coords"]["top"])):
-                    sorted_text_regions.append(text_region)
-                    sorted_text_regions[-1]["mode"] = "annotation"
-                    sorted_text_regions[-1]["label"] = self.update_label(sorted_text_regions[-1]["label"], "ⓐ")
-                    if i == 0 and self.sem_token:
-                        sorted_text_regions[-1]["label"] = "â“¢" + sorted_text_regions[-1]["label"]
-                for i, text_region in enumerate(sorted(right, key=lambda tr: tr["coords"]["top"])):
-                    sorted_text_regions.append(text_region)
-                    sorted_text_regions[-1]["mode"] = "body"
-                    sorted_text_regions[-1]["label"] = self.update_label(sorted_text_regions[-1]["label"], "â“‘")
-                    if i == 0 and self.sem_token and len(left) == 0:
-                        sorted_text_regions[-1]["label"] = "â“¢" + sorted_text_regions[-1]["label"]
-                    if i == len(right)-1 and self.sem_token and self.end_token:
-                        sorted_text_regions[-1]["label"] = sorted_text_regions[-1]["label"] + self.matching_token["â“¢"]
-
-        sep = "" if self.sem_token else "\n"
-        new_label = sep.join(t["label"] for t in sorted_text_regions)
-        return new_label, sorted_text_regions, nb_cols, side
-
-
-if __name__ == "__main__":
-
-    READ2016DatasetFormatter("page", sem_token=True).format()
-    READ2016DatasetFormatter("page", sem_token=False).format()
-    READ2016DatasetFormatter("double_page", sem_token=True).format()
-    READ2016DatasetFormatter("double_page", sem_token=False).format()
\ No newline at end of file
diff --git a/Datasets/dataset_formatters/rimes_formatter.py b/Datasets/dataset_formatters/rimes_formatter.py
deleted file mode 100644
index 929a42a4..00000000
--- a/Datasets/dataset_formatters/rimes_formatter.py
+++ /dev/null
@@ -1,257 +0,0 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
-from Datasets.dataset_formatters.generic_dataset_formatter import OCRDatasetFormatter
-import os
-import numpy as np
-from Datasets.dataset_formatters.utils_dataset import natural_sort
-from PIL import Image
-import xml.etree.ElementTree as ET
-import re
-
-# Layout string to token
-SEM_MATCHING_TOKENS_STR = {
-            'Ouverture': "ⓞ",  # opening
-            'Corps de texte': "â“‘",  # body
-            'PS/PJ': "ⓟ",  # post scriptum
-            'Coordonnées Expéditeur': "ⓢ",  # sender
-            'Reference': "â“¢",  # also counted as sender information
-            'Objet': "ⓨ",  # why
-            'Date, Lieu': "ⓦ",  # where, when
-            'Coordonnées Destinataire': "ⓡ",  # recipient
-        }
-
-# Layout begin-token to end-token
-SEM_MATCHING_TOKENS = {
-            "â“‘": "â’·",
-            "ⓞ": "Ⓞ",
-            "ⓡ": "Ⓡ",
-            "ⓢ": "Ⓢ",
-            "ⓦ": "Ⓦ",
-            "ⓨ": "Ⓨ",
-            "ⓟ": "Ⓟ"
-        }
-
-
-class RIMESDatasetFormatter(OCRDatasetFormatter):
-    def __init__(self, level, set_names=["train", "valid", "test"], dpi=150, sem_token=True):
-        super(RIMESDatasetFormatter, self).__init__("RIMES", level, "_sem" if sem_token else "", set_names)
-
-        self.source_fold_path = os.path.join("../raw", "RIMES")
-        self.dpi = dpi
-        self.sem_token = sem_token
-        self.map_datasets_files.update({
-            "RIMES": {
-                # (1,050 for train, 100 for validation and 100 for test)
-                "page": {
-                    "arx_files": ["RIMES_page.tar.gz", ],
-                    "needed_files": [],
-                    "format_function": self.format_rimes_page,
-                },
-            }
-        })
-
-        self.matching_tokens_str = SEM_MATCHING_TOKENS_STR
-        self.matching_tokens = SEM_MATCHING_TOKENS
-        self.ordering_function = order_text_regions
-
-    def preformat_rimes_page(self):
-        """
-        Extract all information from dataset and correct some annotations
-        """
-        dataset = {
-            "train": list(),
-            "valid": list(),
-            "test": list()
-        }
-        img_folder_path = os.path.join(self.temp_fold, "RIMES page", "Images")
-        xml_folder_path = os.path.join(self.temp_fold, "RIMES page", "XML")
-        xml_files = natural_sort([os.path.join(xml_folder_path, name) for name in os.listdir(xml_folder_path)])
-        train_xml = xml_files[:1050]
-        valid_xml = xml_files[1050:1150]
-        test_xml = xml_files[1150:]
-        for set_name, xml_files in zip(self.set_names, [train_xml, valid_xml, test_xml]):
-            for i, xml_path in enumerate(xml_files):
-                text_regions = list()
-                root = ET.parse(xml_path).getroot()
-                img_name = root.find("source").text
-                if img_name == "01160_L.png":
-                    text_regions.append({
-                        "label": "LETTRE RECOMMANDEE\nAVEC ACCUSE DE RECEPTION",
-                        "type": "",
-                        "coords": {
-                            "left": 88,
-                            "right": 1364,
-                            "top": 1224,
-                            "bottom": 1448,
-                        }
-                    })
-                for text_region in root.findall("box"):
-                    type = text_region.find("type").text
-                    label = text_region.find("text").text
-                    if label is None or len(label.strip()) <= 0:
-                        continue
-                    if label == "Ref : QVLCP¨65":
-                        label = label.replace("¨", "")
-                    if img_name == "01094_L.png" and type == "Corps de texte":
-                        label = "Suite à la tempête du 19.11.06, un\narbre est tombé sur mon toît et l'a endommagé.\nJe d'eplore une cinquantaine de tuiles à changer,\nune poutre à réparer et une gouttière à\nremplacer. Veuillez trouver ci-joint le devis\nde réparation. Merci de m'envoyer votre\nexpert le plus rapidement possible.\nEn esperant une réponse rapide de votre\npart, veuillez accepter, madame, monsieur,\nmes salutations distinguées."
-                    elif img_name == "01111_L.png" and type == "Corps de texte":
-                        label = "Je vous ai envoyé un courrier le 20 octobre 2006\nvous signalant un sinistre survenu dans ma\nmaison, un dégât des eaux consécutif aux\nfortes pluis.\nVous deviez envoyer un expert pour constater\nles dégâts. Personne n'est venu à ce jour\nJe vous prie donc de faire le nécessaire\nafin que les réparations nécessaires puissent\nêtre commencés.\nDans l'attente, veuillez agréer, Monsieur,\nmes sincères salutations"
-
-                    label = self.convert_label_accent(label)
-                    label = self.convert_label(label)
-                    label = self.format_text_label(label)
-                    coords = {
-                        "left": int(text_region.attrib["top_left_x"]),
-                        "right": int(text_region.attrib["bottom_right_x"]),
-                        "top": int(text_region.attrib["top_left_y"]),
-                        "bottom": int(text_region.attrib["bottom_right_y"]),
-                    }
-                    text_regions.append({
-                        "label": label,
-                        "type": type,
-                        "coords": coords
-                    })
-                text_regions = self.ordering_function(text_regions)
-                dataset[set_name].append({
-                    "text_regions": text_regions,
-                    "img_path": os.path.join(img_folder_path, img_name),
-                    "label": "\n".join([tr["label"] for tr in text_regions]),
-                    "sem_label": "".join([self.sem_label(tr["label"], tr["type"]) for tr in text_regions]),
-                })
-        return dataset
-
-    def convert_label_accent(self, label):
-        """
-        Solve encoding issues
-        """
-        return label.replace("\\n", "\n").replace("<euro>", "€").replace(">euro>", "€").replace(">fligne>", " ")\
-            .replace("¤", "¤").replace("û", "û").replace("�", "").replace("ï¿©", "é").replace("ç", "ç")\
-            .replace("é", "é").replace("ô", "ô").replace(u'\xa0', " ").replace("è", "è").replace("°", "°")\
-            .replace("À", "À").replace("ì", "À").replace("ê", "ê").replace("î", "î").replace("â", "â")\
-            .replace("²", "²").replace("ù", "ù").replace("Ã", "à").replace("¬", "€")
-
-    def format_rimes_page(self):
-        """
-        Format RIMES page dataset
-        """
-        dataset = self.preformat_rimes_page()
-        for set_name in self.set_names:
-            fold = os.path.join(self.target_fold_path, set_name)
-            for sample in dataset[set_name]:
-                new_name = "{}_{}.png".format(set_name, len(os.listdir(fold)))
-                new_img_path = os.path.join(fold, new_name)
-                self.load_resize_save(sample["img_path"], new_img_path, 300, self.dpi)
-                for tr in sample["text_regions"]:
-                    tr["coords"] = self.adjust_coord_ratio(tr["coords"], self.dpi / 300)
-                page = {
-                    "text": sample["label"] if not self.sem_token else sample["sem_label"],
-                    "paragraphs": sample["text_regions"],
-                    "nb_cols": 1,
-                }
-                self.charset = self.charset.union(set(page["text"]))
-                self.gt[set_name][new_name] = page
-
-    def convert_label(self, label):
-        """
-        Some annotations presents many options for a given text part, always keep the first one only
-        """
-        if "¤" in label:
-            label = re.sub('¤{([^¤]*)[/|]([^¤]*)}¤', r'\1', label, flags=re.DOTALL)
-            label = re.sub('¤{([^¤]*)[/|]([^¤]*)[/|]([^¤]*)>', r'\1', label, flags=re.DOTALL)
-            label = re.sub('¤([^¤]*)[/|]([^¤]*)¤', r'\1', label, flags=re.DOTALL)
-            label = re.sub('¤{}¤([^¤]*)[/|]([^ ]*)', r'\1', label, flags=re.DOTALL)
-            label = re.sub('¤{/([^¤]*)/([^ ]*)', r'\1', label, flags=re.DOTALL)
-            label = re.sub('¤{([^¤]*)[/|]([^ ]*)', r'\1', label, flags=re.DOTALL)
-            label = re.sub('([^¤]*)/(.*)[¤}{]+', r'\1', label, flags=re.DOTALL)
-            label = re.sub('[¤}{]+([^¤}{]*)[¤}{]+', r'\1', label, flags=re.DOTALL)
-            label = re.sub('¤([^¤]*)¤', r'\1', label, flags=re.DOTALL)
-        label = re.sub('[ ]+', " ", label, flags=re.DOTALL)
-        label = label.strip()
-        return label
-
-    def sem_label(self, label, type):
-        """
-        Add layout tokens
-        """
-        if type == "":
-            return label
-        begin_token = self.matching_tokens_str[type]
-        end_token = self.matching_tokens[begin_token]
-        return begin_token + label + end_token
-
-
-def order_text_regions(text_regions):
-    """
-    Establish reading order based on text region pixel positions
-    """
-    sorted_text_regions = list()
-    for tr in text_regions:
-        added = False
-        if len(sorted_text_regions) == 0:
-            sorted_text_regions.append(tr)
-            added = True
-        else:
-            for i, sorted_tr in enumerate(sorted_text_regions):
-                tr_height = tr["coords"]["bottom"] - tr["coords"]["top"]
-                sorted_tr_height = sorted_tr["coords"]["bottom"] - sorted_tr["coords"]["top"]
-                tr_is_totally_above = tr["coords"]["bottom"] < sorted_tr["coords"]["top"]
-                tr_is_top_above = tr["coords"]["top"] < sorted_tr["coords"]["top"]
-                is_same_level = sorted_tr["coords"]["top"] <= tr["coords"]["bottom"] <= sorted_tr["coords"]["bottom"] or\
-                                sorted_tr["coords"]["top"] <= tr["coords"]["top"] <= sorted_tr["coords"]["bottom"] or\
-                                tr["coords"]["top"] <= sorted_tr["coords"]["bottom"] <= tr["coords"]["bottom"] or\
-                                tr["coords"]["top"] <= sorted_tr["coords"]["top"] <= tr["coords"]["bottom"]
-                vertical_shared_space = tr["coords"]["bottom"]-sorted_tr["coords"]["top"] if tr_is_top_above else sorted_tr["coords"]["bottom"]-tr["coords"]["top"]
-                reach_same_level_limit = vertical_shared_space > 0.3*min(tr_height, sorted_tr_height)
-                is_more_at_left = tr["coords"]["left"] < sorted_tr["coords"]["left"]
-                equivalent_height = abs(tr_height-sorted_tr_height) < 0.3*min(tr_height, sorted_tr_height)
-                is_middle_above_top = np.mean([tr["coords"]["top"], tr["coords"]["bottom"]]) < sorted_tr["coords"]["top"]
-                if tr_is_totally_above or\
-                    (is_same_level and equivalent_height and is_more_at_left and reach_same_level_limit) or\
-                    (is_same_level and equivalent_height and tr_is_top_above and not reach_same_level_limit) or\
-                    (is_same_level and not equivalent_height and is_middle_above_top):
-                    sorted_text_regions.insert(i, tr)
-                    added = True
-                    break
-        if not added:
-            sorted_text_regions.append(tr)
-
-    return sorted_text_regions
-
-
-if __name__ == "__main__":
-
-    RIMESDatasetFormatter("page", sem_token=True).format()
-    RIMESDatasetFormatter("page", sem_token=False).format()
diff --git a/Datasets/dataset_formatters/simara_formatter.py b/Datasets/dataset_formatters/simara_formatter.py
index c8479ed0..c60eb30f 100644
--- a/Datasets/dataset_formatters/simara_formatter.py
+++ b/Datasets/dataset_formatters/simara_formatter.py
@@ -1,38 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
 from Datasets.dataset_formatters.generic_dataset_formatter import OCRDatasetFormatter
 import os
 import numpy as np
diff --git a/Datasets/dataset_formatters/utils_dataset.py b/Datasets/dataset_formatters/utils_dataset.py
index 2495873e..f4d980da 100644
--- a/Datasets/dataset_formatters/utils_dataset.py
+++ b/Datasets/dataset_formatters/utils_dataset.py
@@ -1,39 +1,3 @@
-
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
 import re
 import random
 import cv2
diff --git a/Fonts/list_fonts_read_2016.txt b/Fonts/list_fonts_read_2016.txt
deleted file mode 100644
index ab092fa8..00000000
--- a/Fonts/list_fonts_read_2016.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-"../../../Fonts/lato/Lato-HairlineItalic.ttf",
-"../../../Fonts/lato/Lato-HeavyItalic.ttf",
-"../../../Fonts/lato/Lato-BoldItalic.ttf",
-"../../../Fonts/lato/Lato-Black.ttf",
-"../../../Fonts/lato/Lato-Heavy.ttf",
-"../../../Fonts/lato/Lato-Regular.ttf",
-"../../../Fonts/lato/Lato-LightItalic.ttf",
-"../../../Fonts/lato/Lato-Italic.ttf",
-"../../../Fonts/lato/Lato-ThinItalic.ttf",
-"../../../Fonts/lato/Lato-Bold.ttf",
-"../../../Fonts/lato/Lato-Hairline.ttf",
-"../../../Fonts/lato/Lato-Medium.ttf",
-"../../../Fonts/lato/Lato-SemiboldItalic.ttf",
-"../../../Fonts/lato/Lato-BlackItalic.ttf",
-"../../../Fonts/lato/Lato-MediumItalic.ttf",
-"../../../Fonts/lato/Lato-Semibold.ttf",
-"../../../Fonts/lato/Lato-Thin.ttf",
-"../../../Fonts/lato/Lato-Light.ttf",
-"../../../Fonts/gentiumplus/GentiumPlus-I.ttf",
-"../../../Fonts/gentiumplus/GentiumPlus-R.ttf",
-"../../../Fonts/dejavu/DejaVuSansMono-BoldOblique.ttf",
-"../../../Fonts/dejavu/DejaVuSerifCondensed.ttf",
-"../../../Fonts/dejavu/DejaVuSans-BoldOblique.ttf",
-"../../../Fonts/dejavu/DejaVuSans-ExtraLight.ttf",
-"../../../Fonts/dejavu/DejaVuSansCondensed-Oblique.ttf",
-"../../../Fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf",
-"../../../Fonts/dejavu/DejaVuSansCondensed-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSerif-Italic.ttf",
-"../../../Fonts/dejavu/DejaVuSansCondensed.ttf",
-"../../../Fonts/dejavu/DejaVuSerifCondensed-Italic.ttf",
-"../../../Fonts/dejavu/DejaVuSerifCondensed-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSansMono.ttf",
-"../../../Fonts/dejavu/DejaVuSerif-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSans-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSerif.ttf",
-"../../../Fonts/dejavu/DejaVuSansMono-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSerif-BoldItalic.ttf",
-"../../../Fonts/dejavu/DejaVuSansMono-Oblique.ttf",
-"../../../Fonts/dejavu/DejaVuSans.ttf",
-"../../../Fonts/dejavu/DejaVuSans-Oblique.ttf",
-"../../../Fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf"
\ No newline at end of file
diff --git a/Fonts/list_fonts_rimes.txt b/Fonts/list_fonts_rimes.txt
deleted file mode 100644
index 4628dbd5..00000000
--- a/Fonts/list_fonts_rimes.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-"../../../Fonts/handwritten-mix/Parisienne-Regular.ttf",
-"../../../Fonts/handwritten-mix/A little sunshine.ttf",
-"../../../Fonts/handwritten-mix/Massillo.ttf",
-"../../../Fonts/handwritten-mix/Cursive standard Bold.ttf",
-"../../../Fonts/handwritten-mix/Merveille-mj8j.ttf",
-"../../../Fonts/handwritten-mix/Cursive standard.ttf",
-"../../../Fonts/handwritten-mix/Roustel.ttf",
-"../../../Fonts/handwritten-mix/Baby Doll.ttf",
-"../../../Fonts/handwritten-mix/flashback Demo.ttf",
-"../../../Fonts/handwritten-mix/CreamShoes.ttf",
-"../../../Fonts/handwritten-mix/Gentle Remind.ttf",
-"../../../Fonts/handwritten-mix/Alexandria Rose.ttf",
-"../../../Fonts/lato/Lato-HairlineItalic.ttf",
-"../../../Fonts/lato/Lato-HeavyItalic.ttf",
-"../../../Fonts/lato/Lato-BoldItalic.ttf",
-"../../../Fonts/lato/Lato-Black.ttf",
-"../../../Fonts/lato/Lato-Heavy.ttf",
-"../../../Fonts/lato/Lato-Regular.ttf",
-"../../../Fonts/lato/Lato-LightItalic.ttf",
-"../../../Fonts/lato/Lato-Italic.ttf",
-"../../../Fonts/lato/Lato-ThinItalic.ttf",
-"../../../Fonts/lato/Lato-Bold.ttf",
-"../../../Fonts/lato/Lato-Hairline.ttf",
-"../../../Fonts/lato/Lato-Medium.ttf",
-"../../../Fonts/lato/Lato-SemiboldItalic.ttf",
-"../../../Fonts/lato/Lato-BlackItalic.ttf",
-"../../../Fonts/lato/Lato-MediumItalic.ttf",
-"../../../Fonts/lato/Lato-Semibold.ttf",
-"../../../Fonts/lato/Lato-Thin.ttf",
-"../../../Fonts/lato/Lato-Light.ttf",
-"../../../Fonts/gentiumplus/GentiumPlus-I.ttf",
-"../../../Fonts/gentiumplus/GentiumPlus-R.ttf",
-"../../../Fonts/dejavu/DejaVuSansMono-BoldOblique.ttf",
-"../../../Fonts/dejavu/DejaVuSerifCondensed.ttf",
-"../../../Fonts/dejavu/DejaVuSans-BoldOblique.ttf",
-"../../../Fonts/dejavu/DejaVuSans-ExtraLight.ttf",
-"../../../Fonts/dejavu/DejaVuSansCondensed-Oblique.ttf",
-"../../../Fonts/dejavu/DejaVuSerifCondensed-BoldItalic.ttf",
-"../../../Fonts/dejavu/DejaVuSansCondensed-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSerif-Italic.ttf",
-"../../../Fonts/dejavu/DejaVuSansCondensed.ttf",
-"../../../Fonts/dejavu/DejaVuSerifCondensed-Italic.ttf",
-"../../../Fonts/dejavu/DejaVuSerifCondensed-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSansMono.ttf",
-"../../../Fonts/dejavu/DejaVuSerif-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSans-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSerif.ttf",
-"../../../Fonts/dejavu/DejaVuSansMono-Bold.ttf",
-"../../../Fonts/dejavu/DejaVuSerif-BoldItalic.ttf",
-"../../../Fonts/dejavu/DejaVuSansMono-Oblique.ttf",
-"../../../Fonts/dejavu/DejaVuSans.ttf",
-"../../../Fonts/dejavu/DejaVuSans-Oblique.ttf",
-"../../../Fonts/dejavu/DejaVuSansCondensed-BoldOblique.ttf",
-"../../../Fonts/open-sans/OpenSans-SemiboldItalic.ttf",
-"../../../Fonts/open-sans/OpenSans-CondLight.ttf",
-"../../../Fonts/open-sans/OpenSans-Light.ttf",
-"../../../Fonts/open-sans/OpenSans-Italic.ttf",
-"../../../Fonts/open-sans/OpenSans-CondBold.ttf",
-"../../../Fonts/open-sans/OpenSans-Bold.ttf",
-"../../../Fonts/open-sans/OpenSans-CondLightItalic.ttf",
-"../../../Fonts/open-sans/OpenSans-ExtraBold.ttf",
-"../../../Fonts/open-sans/OpenSans-Semibold.ttf",
-"../../../Fonts/open-sans/OpenSans-Regular.ttf",
-"../../../Fonts/open-sans/OpenSans-BoldItalic.ttf",
-"../../../Fonts/open-sans/OpenSans-LightItalic.ttf",
-"../../../Fonts/open-sans/OpenSans-ExtraBoldItalic.ttf",
-"../../../Fonts/msttcorefonts/Arial.ttf",
-"../../../Fonts/msttcorefonts/Verdana_Italic.ttf",
-"../../../Fonts/msttcorefonts/Georgia_Bold_Italic.ttf",
-"../../../Fonts/msttcorefonts/Andale_Mono.ttf",
-"../../../Fonts/msttcorefonts/Courier_New_Italic.ttf",
-"../../../Fonts/msttcorefonts/Georgia_Italic.ttf",
-"../../../Fonts/msttcorefonts/Arial_Black.ttf",
-"../../../Fonts/msttcorefonts/Trebuchet_MS_Italic.ttf",
-"../../../Fonts/msttcorefonts/Verdana.ttf",
-"../../../Fonts/msttcorefonts/Courier_New.ttf",
-"../../../Fonts/msttcorefonts/Verdana_Bold.ttf",
-"../../../Fonts/msttcorefonts/Arial_Bold_Italic.ttf",
-"../../../Fonts/msttcorefonts/Georgia.ttf",
-"../../../Fonts/msttcorefonts/Trebuchet_MS_Bold_Italic.ttf",
-"../../../Fonts/msttcorefonts/Impact.ttf",
-"../../../Fonts/msttcorefonts/Courier_New_Bold.ttf",
-"../../../Fonts/msttcorefonts/Times_New_Roman_Italic.ttf",
-"../../../Fonts/msttcorefonts/Georgia_Bold.ttf",
-"../../../Fonts/msttcorefonts/Times_New_Roman_Bold.ttf",
-"../../../Fonts/msttcorefonts/Times_New_Roman.ttf",
-"../../../Fonts/msttcorefonts/Comic_Sans_MS.ttf",
-"../../../Fonts/msttcorefonts/Trebuchet_MS_Bold.ttf",
-"../../../Fonts/msttcorefonts/Trebuchet_MS.ttf",
-"../../../Fonts/msttcorefonts/Arial_Italic.ttf",
-"../../../Fonts/msttcorefonts/Courier_New_Bold_Italic.ttf",
-"../../../Fonts/msttcorefonts/Verdana_Bold_Italic.ttf",
-"../../../Fonts/msttcorefonts/Arial_Bold.ttf",
-"../../../Fonts/msttcorefonts/Times_New_Roman_Bold_Italic.ttf",
-"../../../Fonts/msttcorefonts/Comic_Sans_MS_Bold.ttf"
\ No newline at end of file
diff --git a/LICENSE_CECILL-C.md b/LICENSE_CECILL-C.md
deleted file mode 100644
index 1f0442b5..00000000
--- a/LICENSE_CECILL-C.md
+++ /dev/null
@@ -1,517 +0,0 @@
-
-CeCILL-C FREE SOFTWARE LICENSE AGREEMENT
-
-
-    Notice
-
-This Agreement is a Free Software license agreement that is the result
-of discussions between its authors in order to ensure compliance with
-the two main principles guiding its drafting:
-
-    * firstly, compliance with the principles governing the distribution
-      of Free Software: access to source code, broad rights granted to
-      users,
-    * secondly, the election of a governing law, French law, with which
-      it is conformant, both as regards the law of torts and
-      intellectual property law, and the protection that it offers to
-      both authors and holders of the economic rights over software.
-
-The authors of the CeCILL-C (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
-license are:  Université de Rouen Normandie (1), INSA Rouen (2), tutelles du laboratoire LITIS (1 et 2)
-
-Commissariat à l'Energie Atomique - CEA, a public scientific, technical
-and industrial research establishment, having its principal place of
-business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
-
-Centre National de la Recherche Scientifique - CNRS, a public scientific
-and technological establishment, having its principal place of business
-at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
-
-Institut National de Recherche en Informatique et en Automatique -
-INRIA, a public scientific and technological establishment, having its
-principal place of business at Domaine de Voluceau, Rocquencourt, BP
-105, 78153 Le Chesnay cedex, France.
-
-
-    Preamble
-
-The purpose of this Free Software license agreement is to grant users
-the right to modify and re-use the software governed by this license.
-
-The exercising of this right is conditional upon the obligation to make
-available to the community the modifications made to the source code of
-the software so as to contribute to its evolution.
-
-In consideration of access to the source code and the rights to copy,
-modify and redistribute granted by the license, users are provided only
-with a limited warranty and the software's author, the holder of the
-economic rights, and the successive licensors only have limited liability.
-
-In this respect, the risks associated with loading, using, modifying
-and/or developing or reproducing the software by the user are brought to
-the user's attention, given its Free Software status, which may make it
-complicated to use, with the result that its use is reserved for
-developers and experienced professionals having in-depth computer
-knowledge. Users are therefore encouraged to load and test the
-suitability of the software as regards their requirements in conditions
-enabling the security of their systems and/or data to be ensured and,
-more generally, to use and operate it in the same conditions of
-security. This Agreement may be freely reproduced and published,
-provided it is not altered, and that no provisions are either added or
-removed herefrom.
-
-This Agreement may apply to any or all software for which the holder of
-the economic rights decides to submit the use thereof to its provisions.
-
-
-    Article 1 - DEFINITIONS
-
-For the purpose of this Agreement, when the following expressions
-commence with a capital letter, they shall have the following meaning:
-
-Agreement: means this license agreement, and its possible subsequent
-versions and annexes.
-
-Software: means the software in its Object Code and/or Source Code form
-and, where applicable, its documentation, "as is" when the Licensee
-accepts the Agreement.
-
-Initial Software: means the Software in its Source Code and possibly its
-Object Code form and, where applicable, its documentation, "as is" when
-it is first distributed under the terms and conditions of the Agreement.
-
-Modified Software: means the Software modified by at least one
-Integrated Contribution.
-
-Source Code: means all the Software's instructions and program lines to
-which access is required so as to modify the Software.
-
-Object Code: means the binary files originating from the compilation of
-the Source Code.
-
-Holder: means the holder(s) of the economic rights over the Initial
-Software.
-
-Licensee: means the Software user(s) having accepted the Agreement.
-
-Contributor: means a Licensee having made at least one Integrated
-Contribution.
-
-Licensor: means the Holder, or any other individual or legal entity, who
-distributes the Software under the Agreement.
-
-Integrated Contribution: means any or all modifications, corrections,
-translations, adaptations and/or new functions integrated into the
-Source Code by any or all Contributors.
-
-Related Module: means a set of sources files including their
-documentation that, without modification to the Source Code, enables
-supplementary functions or services in addition to those offered by the
-Software.
-
-Derivative Software: means any combination of the Software, modified or
-not, and of a Related Module.
-
-Parties: mean both the Licensee and the Licensor.
-
-These expressions may be used both in singular and plural form.
-
-
-    Article 2 - PURPOSE
-
-The purpose of the Agreement is the grant by the Licensor to the
-Licensee of a non-exclusive, transferable and worldwide license for the
-Software as set forth in Article 5 hereinafter for the whole term of the
-protection granted by the rights over said Software. 
-
-
-    Article 3 - ACCEPTANCE
-
-3.1 The Licensee shall be deemed as having accepted the terms and
-conditions of this Agreement upon the occurrence of the first of the
-following events:
-
-    * (i) loading the Software by any or all means, notably, by
-      downloading from a remote server, or by loading from a physical
-      medium;
-    * (ii) the first time the Licensee exercises any of the rights
-      granted hereunder.
-
-3.2 One copy of the Agreement, containing a notice relating to the
-characteristics of the Software, to the limited warranty, and to the
-fact that its use is restricted to experienced users has been provided
-to the Licensee prior to its acceptance as set forth in Article 3.1
-hereinabove, and the Licensee hereby acknowledges that it has read and
-understood it.
-
-
-    Article 4 - EFFECTIVE DATE AND TERM
-
-
-      4.1 EFFECTIVE DATE
-
-The Agreement shall become effective on the date when it is accepted by
-the Licensee as set forth in Article 3.1.
-
-
-      4.2 TERM
-
-The Agreement shall remain in force for the entire legal term of
-protection of the economic rights over the Software.
-
-
-    Article 5 - SCOPE OF RIGHTS GRANTED
-
-The Licensor hereby grants to the Licensee, who accepts, the following
-rights over the Software for any or all use, and for the term of the
-Agreement, on the basis of the terms and conditions set forth hereinafter.
-
-Besides, if the Licensor owns or comes to own one or more patents
-protecting all or part of the functions of the Software or of its
-components, the Licensor undertakes not to enforce the rights granted by
-these patents against successive Licensees using, exploiting or
-modifying the Software. If these patents are transferred, the Licensor
-undertakes to have the transferees subscribe to the obligations set
-forth in this paragraph.
-
-
-      5.1 RIGHT OF USE
-
-The Licensee is authorized to use the Software, without any limitation
-as to its fields of application, with it being hereinafter specified
-that this comprises:
-
-   1. permanent or temporary reproduction of all or part of the Software
-      by any or all means and in any or all form.
-
-   2. loading, displaying, running, or storing the Software on any or
-      all medium.
-
-   3. entitlement to observe, study or test its operation so as to
-      determine the ideas and principles behind any or all constituent
-      elements of said Software. This shall apply when the Licensee
-      carries out any or all loading, displaying, running, transmission
-      or storage operation as regards the Software, that it is entitled
-      to carry out hereunder.
-
-
-      5.2 RIGHT OF MODIFICATION
-
-The right of modification includes the right to translate, adapt,
-arrange, or make any or all modifications to the Software, and the right
-to reproduce the resulting software. It includes, in particular, the
-right to create a Derivative Software.
-
-The Licensee is authorized to make any or all modification to the
-Software provided that it includes an explicit notice that it is the
-author of said modification and indicates the date of the creation thereof.
-
-
-      5.3 RIGHT OF DISTRIBUTION
-
-In particular, the right of distribution includes the right to publish,
-transmit and communicate the Software to the general public on any or
-all medium, and by any or all means, and the right to market, either in
-consideration of a fee, or free of charge, one or more copies of the
-Software by any means.
-
-The Licensee is further authorized to distribute copies of the modified
-or unmodified Software to third parties according to the terms and
-conditions set forth hereinafter.
-
-
-        5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
-
-The Licensee is authorized to distribute true copies of the Software in
-Source Code or Object Code form, provided that said distribution
-complies with all the provisions of the Agreement and is accompanied by:
-
-   1. a copy of the Agreement,
-
-   2. a notice relating to the limitation of both the Licensor's
-      warranty and liability as set forth in Articles 8 and 9,
-
-and that, in the event that only the Object Code of the Software is
-redistributed, the Licensee allows effective access to the full Source
-Code of the Software at a minimum during the entire period of its
-distribution of the Software, it being understood that the additional
-cost of acquiring the Source Code shall not exceed the cost of
-transferring the data.
-
-
-        5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
-
-When the Licensee makes an Integrated Contribution to the Software, the
-terms and conditions for the distribution of the resulting Modified
-Software become subject to all the provisions of this Agreement.
-
-The Licensee is authorized to distribute the Modified Software, in
-source code or object code form, provided that said distribution
-complies with all the provisions of the Agreement and is accompanied by:
-
-   1. a copy of the Agreement,
-
-   2. a notice relating to the limitation of both the Licensor's
-      warranty and liability as set forth in Articles 8 and 9,
-
-and that, in the event that only the object code of the Modified
-Software is redistributed, the Licensee allows effective access to the
-full source code of the Modified Software at a minimum during the entire
-period of its distribution of the Modified Software, it being understood
-that the additional cost of acquiring the source code shall not exceed
-the cost of transferring the data.
-
-
-        5.3.3 DISTRIBUTION OF DERIVATIVE SOFTWARE
-
-When the Licensee creates Derivative Software, this Derivative Software
-may be distributed under a license agreement other than this Agreement,
-subject to compliance with the requirement to include a notice
-concerning the rights over the Software as defined in Article 6.4.
-In the event the creation of the Derivative Software required modification 
-of the Source Code, the Licensee undertakes that:
-
-   1. the resulting Modified Software will be governed by this Agreement,
-   2. the Integrated Contributions in the resulting Modified Software
-      will be clearly identified and documented,
-   3. the Licensee will allow effective access to the source code of the
-      Modified Software, at a minimum during the entire period of
-      distribution of the Derivative Software, such that such
-      modifications may be carried over in a subsequent version of the
-      Software; it being understood that the additional cost of
-      purchasing the source code of the Modified Software shall not
-      exceed the cost of transferring the data.
-
-
-        5.3.4 COMPATIBILITY WITH THE CeCILL LICENSE
-
-When a Modified Software contains an Integrated Contribution subject to
-the CeCILL license agreement, or when a Derivative Software contains a
-Related Module subject to the CeCILL license agreement, the provisions
-set forth in the third item of Article 6.4 are optional.
-
-
-    Article 6 - INTELLECTUAL PROPERTY
-
-
-      6.1 OVER THE INITIAL SOFTWARE
-
-The Holder owns the economic rights over the Initial Software. Any or
-all use of the Initial Software is subject to compliance with the terms
-and conditions under which the Holder has elected to distribute its work
-and no one shall be entitled to modify the terms and conditions for the
-distribution of said Initial Software.
-
-The Holder undertakes that the Initial Software will remain ruled at
-least by this Agreement, for the duration set forth in Article 4.2.
-
-
-      6.2 OVER THE INTEGRATED CONTRIBUTIONS
-
-The Licensee who develops an Integrated Contribution is the owner of the
-intellectual property rights over this Contribution as defined by
-applicable law.
-
-
-      6.3 OVER THE RELATED MODULES
-
-The Licensee who develops a Related Module is the owner of the
-intellectual property rights over this Related Module as defined by
-applicable law and is free to choose the type of agreement that shall
-govern its distribution under the conditions defined in Article 5.3.3.
-
-
-      6.4 NOTICE OF RIGHTS
-
-The Licensee expressly undertakes:
-
-   1. not to remove, or modify, in any manner, the intellectual property
-      notices attached to the Software;
-
-   2. to reproduce said notices, in an identical manner, in the copies
-      of the Software modified or not;
-
-   3. to ensure that use of the Software, its intellectual property
-      notices and the fact that it is governed by the Agreement is
-      indicated in a text that is easily accessible, specifically from
-      the interface of any Derivative Software.
-
-The Licensee undertakes not to directly or indirectly infringe the
-intellectual property rights of the Holder and/or Contributors on the
-Software and to take, where applicable, vis-�-vis its staff, any and all
-measures required to ensure respect of said intellectual property rights
-of the Holder and/or Contributors.
-
-
-    Article 7 - RELATED SERVICES
-
-7.1 Under no circumstances shall the Agreement oblige the Licensor to
-provide technical assistance or maintenance services for the Software.
-
-However, the Licensor is entitled to offer this type of services. The
-terms and conditions of such technical assistance, and/or such
-maintenance, shall be set forth in a separate instrument. Only the
-Licensor offering said maintenance and/or technical assistance services
-shall incur liability therefor.
-
-7.2 Similarly, any Licensor is entitled to offer to its licensees, under
-its sole responsibility, a warranty, that shall only be binding upon
-itself, for the redistribution of the Software and/or the Modified
-Software, under terms and conditions that it is free to decide. Said
-warranty, and the financial terms and conditions of its application,
-shall be subject of a separate instrument executed between the Licensor
-and the Licensee.
-
-
-    Article 8 - LIABILITY
-
-8.1 Subject to the provisions of Article 8.2, the Licensee shall be
-entitled to claim compensation for any direct loss it may have suffered
-from the Software as a result of a fault on the part of the relevant
-Licensor, subject to providing evidence thereof.
-
-8.2 The Licensor's liability is limited to the commitments made under
-this Agreement and shall not be incurred as a result of in particular:
-(i) loss due the Licensee's total or partial failure to fulfill its
-obligations, (ii) direct or consequential loss that is suffered by the
-Licensee due to the use or performance of the Software, and (iii) more
-generally, any consequential loss. In particular the Parties expressly
-agree that any or all pecuniary or business loss (i.e. loss of data,
-loss of profits, operating loss, loss of customers or orders,
-opportunity cost, any disturbance to business activities) or any or all
-legal proceedings instituted against the Licensee by a third party,
-shall constitute consequential loss and shall not provide entitlement to
-any or all compensation from the Licensor.
-
-
-    Article 9 - WARRANTY
-
-9.1 The Licensee acknowledges that the scientific and technical
-state-of-the-art when the Software was distributed did not enable all
-possible uses to be tested and verified, nor for the presence of
-possible defects to be detected. In this respect, the Licensee's
-attention has been drawn to the risks associated with loading, using,
-modifying and/or developing and reproducing the Software which are
-reserved for experienced users.
-
-The Licensee shall be responsible for verifying, by any or all means,
-the suitability of the product for its requirements, its good working
-order, and for ensuring that it shall not cause damage to either persons
-or properties.
-
-9.2 The Licensor hereby represents, in good faith, that it is entitled
-to grant all the rights over the Software (including in particular the
-rights set forth in Article 5).
-
-9.3 The Licensee acknowledges that the Software is supplied "as is" by
-the Licensor without any other express or tacit warranty, other than
-that provided for in Article 9.2 and, in particular, without any warranty
-as to its commercial value, its secured, safe, innovative or relevant
-nature.
-
-Specifically, the Licensor does not warrant that the Software is free
-from any error, that it will operate without interruption, that it will
-be compatible with the Licensee's own equipment and software
-configuration, nor that it will meet the Licensee's requirements.
-
-9.4 The Licensor does not either expressly or tacitly warrant that the
-Software does not infringe any third party intellectual property right
-relating to a patent, software or any other property right. Therefore,
-the Licensor disclaims any and all liability towards the Licensee
-arising out of any or all proceedings for infringement that may be
-instituted in respect of the use, modification and redistribution of the
-Software. Nevertheless, should such proceedings be instituted against
-the Licensee, the Licensor shall provide it with technical and legal
-assistance for its defense. Such technical and legal assistance shall be
-decided on a case-by-case basis between the relevant Licensor and the
-Licensee pursuant to a memorandum of understanding. The Licensor
-disclaims any and all liability as regards the Licensee's use of the
-name of the Software. No warranty is given as regards the existence of
-prior rights over the name of the Software or as regards the existence
-of a trademark.
-
-
-    Article 10 - TERMINATION
-
-10.1 In the event of a breach by the Licensee of its obligations
-hereunder, the Licensor may automatically terminate this Agreement
-thirty (30) days after notice has been sent to the Licensee and has
-remained ineffective.
-
-10.2 A Licensee whose Agreement is terminated shall no longer be
-authorized to use, modify or distribute the Software. However, any
-licenses that it may have granted prior to termination of the Agreement
-shall remain valid subject to their having been granted in compliance
-with the terms and conditions hereof.
-
-
-    Article 11 - MISCELLANEOUS
-
-
-      11.1 EXCUSABLE EVENTS
-
-Neither Party shall be liable for any or all delay, or failure to
-perform the Agreement, that may be attributable to an event of force
-majeure, an act of God or an outside cause, such as defective
-functioning or interruptions of the electricity or telecommunications
-networks, network paralysis following a virus attack, intervention by
-government authorities, natural disasters, water damage, earthquakes,
-fire, explosions, strikes and labor unrest, war, etc.
-
-11.2 Any failure by either Party, on one or more occasions, to invoke
-one or more of the provisions hereof, shall under no circumstances be
-interpreted as being a waiver by the interested Party of its right to
-invoke said provision(s) subsequently.
-
-11.3 The Agreement cancels and replaces any or all previous agreements,
-whether written or oral, between the Parties and having the same
-purpose, and constitutes the entirety of the agreement between said
-Parties concerning said purpose. No supplement or modification to the
-terms and conditions hereof shall be effective as between the Parties
-unless it is made in writing and signed by their duly authorized
-representatives.
-
-11.4 In the event that one or more of the provisions hereof were to
-conflict with a current or future applicable act or legislative text,
-said act or legislative text shall prevail, and the Parties shall make
-the necessary amendments so as to comply with said act or legislative
-text. All other provisions shall remain effective. Similarly, invalidity
-of a provision of the Agreement, for any reason whatsoever, shall not
-cause the Agreement as a whole to be invalid.
-
-
-      11.5 LANGUAGE
-
-The Agreement is drafted in both French and English and both versions
-are deemed authentic.
-
-
-    Article 12 - NEW VERSIONS OF THE AGREEMENT
-
-12.1 Any person is authorized to duplicate and distribute copies of this
-Agreement.
-
-12.2 So as to ensure coherence, the wording of this Agreement is
-protected and may only be modified by the authors of the License, who
-reserve the right to periodically publish updates or new versions of the
-Agreement, each with a separate number. These subsequent versions may
-address new issues encountered by Free Software.
-
-12.3 Any Software distributed under a given version of the Agreement may
-only be subsequently distributed under the same version of the Agreement
-or a subsequent version.
-
-
-    Article 13 - GOVERNING LAW AND JURISDICTION
-
-13.1 The Agreement is governed by French law. The Parties agree to
-endeavor to seek an amicable solution to any disagreements or disputes
-that may arise during the performance of the Agreement.
-
-13.2 Failing an amicable solution within two (2) months as from their
-occurrence, and unless emergency proceedings are necessary, the
-disagreements or disputes shall be referred to the Paris Courts having
-jurisdiction, by the more diligent Party.
-
-
-Version 1.0 dated 2006-09-05.
diff --git a/OCR/line_OCR/ctc/main_line_ctc.py b/OCR/line_OCR/ctc/main_line_ctc.py
index ee517031..bb8fa1d6 100644
--- a/OCR/line_OCR/ctc/main_line_ctc.py
+++ b/OCR/line_OCR/ctc/main_line_ctc.py
@@ -1,36 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
 
 import os
 import sys
diff --git a/OCR/line_OCR/ctc/main_syn_line.py b/OCR/line_OCR/ctc/main_syn_line.py
index de297464..c16f9de5 100644
--- a/OCR/line_OCR/ctc/main_syn_line.py
+++ b/OCR/line_OCR/ctc/main_syn_line.py
@@ -1,36 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
 
 import os
 import sys
diff --git a/OCR/line_OCR/ctc/models_line_ctc.py b/OCR/line_OCR/ctc/models_line_ctc.py
index cda34ebc..c13c072e 100644
--- a/OCR/line_OCR/ctc/models_line_ctc.py
+++ b/OCR/line_OCR/ctc/models_line_ctc.py
@@ -1,36 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
 
 from torch.nn.functional import log_softmax
 from torch.nn import AdaptiveMaxPool2d, Conv1d
diff --git a/OCR/line_OCR/ctc/trainer_line_ctc.py b/OCR/line_OCR/ctc/trainer_line_ctc.py
index cd229206..eba12d81 100644
--- a/OCR/line_OCR/ctc/trainer_line_ctc.py
+++ b/OCR/line_OCR/ctc/trainer_line_ctc.py
@@ -1,36 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
 
 from basic.metric_manager import MetricManager
 from OCR.ocr_manager import OCRManager
diff --git a/OCR/ocr_manager.py b/OCR/ocr_manager.py
index dd920890..e34b36c0 100644
--- a/OCR/ocr_manager.py
+++ b/OCR/ocr_manager.py
@@ -1,38 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
 from basic.generic_training_manager import GenericTrainingManager
 import os
 from PIL import Image
diff --git a/README.md b/README.md
index 45bb7eea..28d0dc92 100644
--- a/README.md
+++ b/README.md
@@ -49,68 +49,6 @@ Install the dependencies:
 pip install -r requirements.txt
 ```
 
-
-## Datasets
-This section is dedicated to the datasets used in the paper: download and formatting instructions are provided
-for experiment replication purposes.
-
-RIMES dataset at page level was distributed during the [evaluation compaign of 2009](https://ieeexplore.ieee.org/document/5277557).
-
-READ 2016 dataset corresponds to the one used in the [ICFHR 2016 competition on handwritten text recognition](https://ieeexplore.ieee.org/document/7814136).
-It can be found [here](https://zenodo.org/record/1164045#.YiINkBvjKEA)
-
-Raw dataset files must be placed in Datasets/raw/{dataset_name} \
-where dataset name is "READ 2016" or "RIMES"
-
-## Training And Evaluation
-### Step 1: Download the dataset
-
-### Step 2: Format the dataset
-```
-python3 Datasets/dataset_formatters/read2016_formatter.py
-python3 Datasets/dataset_formatters/rimes_formatter.py
-```
-
-### Step 3: Add any font you want as .ttf file in the folder Fonts
-
-### Step 4 : Generate synthetic line dataset for pre-training
-```
-python3 OCR/line_OCR/ctc/main_syn_line.py
-```
-There are two lines in this script to adapt to the used dataset:
-```
-model.generate_syn_line_dataset("READ_2016_syn_line")
-dataset_name = "READ_2016"
-```
-
-### Step 5 : Pre-training on synthetic lines
-```
-python3 OCR/line_OCR/ctc/main_line_ctc.py
-```
-There are two lines in this script to adapt to the used dataset:
-```
-dataset_name = "READ_2016"
-"output_folder": "FCN_read_line_syn"
-```
-Weights and evaluation results are stored in OCR/line_OCR/ctc/outputs
-
-### Step 6 : Training the DAN
-```
-python3 OCR/document_OCR/dan/main_dan.py
-```
-The following lines must be adapted to the dataset used and pre-training folder names:
-```
-dataset_name = "READ_2016"
-"transfer_learning": {
-    # model_name: [state_dict_name, checkpoint_path, learnable, strict]
-    "encoder": ["encoder", "../../line_OCR/ctc/outputs/FCN_read_2016_line_syn/checkpoints/best.pt", True, True],
-    "decoder": ["decoder", "../../line_OCR/ctc/outputs/FCN_read_2016_line_syn/best.pt", True, False],
-},
-```
-
-Weights and evaluation results are stored in OCR/document_OCR/dan/outputs
-
-
 ### Remarks (for pre-training and training)
 All hyperparameters are specified and editable in the training scripts (meaning are in comments).\
 Evaluation is performed just after training ending (training is stopped when the maximum elapsed time is reached or after a maximum number of epoch as specified in the training script).\
@@ -154,20 +92,3 @@ To run the inference on a GPU, one can replace `cpu` by the name of the GPU. In
 ```python
 text, confidence_scores = model.predict(image, confidences=True)
 ```
-
-## Citation
-
-```bibtex
-@misc{Coquenet2022b,
-  author = {Coquenet, Denis and Chatelain, Clément and Paquet, Thierry},
-  title = {DAN: a Segmentation-free Document Attention Network for Handwritten Document Recognition},
-  doi = {10.48550/ARXIV.2203.12273},
-  url = {https://arxiv.org/abs/2203.12273},
-  publisher = {arXiv},
-  year = {2022},
-}
-```
-
-## License
-
-This whole project is under Cecill-C license.
diff --git a/basic/generic_dataset_manager.py b/basic/generic_dataset_manager.py
index 7e9c7c7f..dd272d15 100644
--- a/basic/generic_dataset_manager.py
+++ b/basic/generic_dataset_manager.py
@@ -1,37 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
 import torch
 import random
 from torch.utils.data import Dataset, DataLoader
diff --git a/basic/generic_training_manager.py b/basic/generic_training_manager.py
index 2e2a7c95..a8f41b28 100644
--- a/basic/generic_training_manager.py
+++ b/basic/generic_training_manager.py
@@ -1,37 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
 import torch
 import os
 import sys
diff --git a/basic/metric_manager.py b/basic/metric_manager.py
index f537c911..6c857686 100644
--- a/basic/metric_manager.py
+++ b/basic/metric_manager.py
@@ -1,38 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
 
 from Datasets.dataset_formatters.rimes_formatter import SEM_MATCHING_TOKENS as RIMES_MATCHING_TOKENS
 from Datasets.dataset_formatters.read2016_formatter import SEM_MATCHING_TOKENS as READ_MATCHING_TOKENS
diff --git a/basic/scheduler.py b/basic/scheduler.py
index 2781e49a..6c875c1d 100644
--- a/basic/scheduler.py
+++ b/basic/scheduler.py
@@ -1,37 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
 
 from torch.nn import Dropout, Dropout2d
 import numpy as np
diff --git a/basic/transforms.py b/basic/transforms.py
index 3c73ada3..18c8084d 100644
--- a/basic/transforms.py
+++ b/basic/transforms.py
@@ -1,36 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
 
 import numpy as np
 from numpy import random
diff --git a/basic/utils.py b/basic/utils.py
index 8578279a..ac50e57a 100644
--- a/basic/utils.py
+++ b/basic/utils.py
@@ -1,36 +1,3 @@
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
 
 
 import numpy as np
diff --git a/dan/cli.py b/dan/cli.py
new file mode 100644
index 00000000..b0ed2199
--- /dev/null
+++ b/dan/cli.py
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+import argparse
+import errno
+from dan.datasets.extract.extract_from_arkindex import add_extract_parser
+from dan.ocr.line.generate_synthetic import add_generate_parser
+
+from dan.ocr.train import add_train_parser
+
+
+
+def get_parser():
+    parser = argparse.ArgumentParser(prog="TEKLIA DAN training")
+    subcommands = parser.add_subparsers(metavar="subcommand")
+
+    add_train_parser(subcommands)
+    add_extract_parser(subcommands)
+    add_generate_parser(subcommands)
+    return parser
+
+def main():
+    parser = get_parser()
+    args = vars(parser.parse_args())
+    if "func" in args:
+        # Run the subcommand's function
+        try:
+            status = args.pop("func")(**args)
+            parser.exit(status=status)
+        except KeyboardInterrupt:
+            # Just quit silently on ^C instead of displaying a long traceback
+            parser.exit(status=errno.EOWNERDEAD)
+    else:
+        parser.error("A subcommand is required.")
diff --git a/dan/datasets/__init__.py b/dan/datasets/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/dan/datasets/extract/__init__.py b/dan/datasets/extract/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/dan/datasets/extract/arkindex_utils.py b/dan/datasets/extract/arkindex_utils.py
new file mode 100644
index 00000000..5216a7e0
--- /dev/null
+++ b/dan/datasets/extract/arkindex_utils.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+"""
+    The arkindex_utils module
+    ======================
+"""
+
+import errno
+import logging
+import sys
+
+from apistar.exceptions import ErrorResponse
+
+
+def retrieve_corpus(client, corpus_name: str) -> str:
+    """
+    Retrieve the corpus id from the corpus name.
+    :param client: The arkindex client.
+    :param corpus_name: The name of the corpus to retrieve.
+    :return target_corpus: The id of the retrieved corpus.
+    """
+    for corpus in client.request("ListCorpus"):
+        if corpus["name"] == corpus_name:
+            target_corpus = corpus["id"]
+    try:
+        logging.info(f"Corpus id retrieved: {target_corpus}")
+    except NameError:
+        logging.error(f"Corpus {corpus_name} not found")
+        sys.exit(errno.EINVAL)
+
+    return target_corpus
+
+
+def retrieve_subsets(
+    client, corpus: str, parents_types: list, parents_names: list
+) -> list:
+    """
+    Retrieve the requested subsets.
+    :param client: The arkindex client.
+    :param corpus: The id of the retrieved corpus.
+    :param parents_types: The types of parents of the elements to retrieve.
+    :param parents_names: The names of parents of the elements to retrieve.
+    :return subsets: The retrieved subsets.
+    """
+    subsets = []
+    for parent_type in parents_types:
+        try:
+            subsets.extend(
+                client.request("ListElements", corpus=corpus, type=parent_type)[
+                    "results"
+                ]
+            )
+        except ErrorResponse as e:
+            logging.error(f"{e.content}: {parent_type}")
+            sys.exit(errno.EINVAL)
+    # Retrieve subsets with name in parents-names. If no parents-names given, keep all subsets.
+    if parents_names is not None:
+        logging.info(f"Retrieving {parents_names} subset(s)")
+        subsets = [subset for subset in subsets if subset["name"] in parents_names]
+    else:
+        logging.info("Retrieving all subsets")
+
+    if len(subsets) == 0:
+        logging.info("No subset found")
+
+    return subsets
diff --git a/dan/datasets/extract/extract_from_arkindex.py b/dan/datasets/extract/extract_from_arkindex.py
new file mode 100644
index 00000000..1a6e207d
--- /dev/null
+++ b/dan/datasets/extract/extract_from_arkindex.py
@@ -0,0 +1,135 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Example of minimal usage:
+# python extract_from_arkindex.py
+#   --corpus "AN-Simara annotations E (2022-06-20)"
+#   --parents-types folder
+#   --parents-names FRAN_IR_032031_4538.pdf
+#   --output-dir ../
+
+"""
+    The extraction module
+    ======================
+"""
+
+import logging
+import os
+
+import cv2
+import imageio.v2 as iio
+from arkindex import ArkindexClient, options_from_env
+from tqdm import tqdm
+
+from dan.datasets.extract.arkindex_utils import retrieve_corpus, retrieve_subsets
+from dan.datasets.extract.utils import get_cli_args
+
+logging.basicConfig(
+    level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s"
+)
+
+
+IMAGES_DIR = "./images/"  # Path to the images directory.
+LABELS_DIR = "./labels/"  # Path to the labels directory.
+
+# Layout string to token
+SEM_MATCHING_TOKENS_STR = {
+    "INTITULE": "ⓘ",
+    "DATE": "â““",
+    "COTE_SERIE": "â“¢",
+    "ANALYSE_COMPL.": "â“’",
+    "PRECISIONS_SUR_COTE": "ⓟ",
+    "COTE_ARTICLE": "ⓐ",
+}
+
+# Layout begin-token to end-token
+SEM_MATCHING_TOKENS = {"ⓘ": "Ⓘ", "ⓓ": "Ⓓ", "ⓢ": "Ⓢ", "ⓒ": "Ⓒ", "ⓟ": "Ⓟ", "ⓐ": "Ⓐ"}
+
+
+def add_extract_parser(subcommands) -> None:
+    parser = subcommands.add_parser(
+        "extract",
+        description=__doc__,
+    )
+    parser.set_defaults(func=run)
+
+
+def run():
+    args = get_cli_args()
+
+    # Get and initialize the parameters.
+    os.makedirs(IMAGES_DIR, exist_ok=True)
+    os.makedirs(LABELS_DIR, exist_ok=True)
+
+    # Login to arkindex.
+    client = ArkindexClient(**options_from_env())
+
+    corpus = retrieve_corpus(client, args.corpus)
+    subsets = retrieve_subsets(client, corpus, args.parents_types, args.parents_names)
+
+    # Iterate over the subsets to find the page images and labels.
+    for subset in subsets:
+
+        os.makedirs(
+            os.path.join(args.output_dir, IMAGES_DIR, subset["name"]), exist_ok=True
+        )
+        os.makedirs(
+            os.path.join(args.output_dir, LABELS_DIR, subset["name"]), exist_ok=True
+        )
+
+        for page in tqdm(
+            client.paginate(
+                "ListElementChildren", id=subset["id"], type="page", recursive=True
+            ),
+            desc="Set " + subset["name"],
+        ):
+
+            image = iio.imread(page["zone"]["url"])
+            cv2.imwrite(
+                os.path.join(
+                    args.output_dir, IMAGES_DIR, subset["name"], f"{page['id']}.jpg"
+                ),
+                cv2.cvtColor(image, cv2.COLOR_BGR2RGB),
+            )
+
+            tr = client.request(
+                "ListTranscriptions", id=page["id"], worker_version=None
+            )["results"]
+            tr = [one for one in tr if one["worker_version_id"] is None]
+            assert len(tr) == 1, page["id"]
+
+            for one_tr in tr:
+                ent = client.request("ListTranscriptionEntities", id=one_tr["id"])[
+                    "results"
+                ]
+                ent = [one for one in ent if one["worker_version_id"] is None]
+                if len(ent) == 0:
+                    continue
+                else:
+                    text = one_tr["text"]
+
+            new_text = text
+            count = 0
+            for e in ent:
+                start_token = SEM_MATCHING_TOKENS_STR[e["entity"]["metas"]["subtype"]]
+                end_token = SEM_MATCHING_TOKENS[start_token]
+                new_text = (
+                    new_text[: count + e["offset"]]
+                    + start_token
+                    + new_text[count + e["offset"] :]
+                )
+                count += 1
+                new_text = (
+                    new_text[: count + e["offset"] + e["length"]]
+                    + end_token
+                    + new_text[count + e["offset"] + e["length"] :]
+                )
+                count += 1
+
+            with open(
+                os.path.join(
+                    args.output_dir, LABELS_DIR, subset["name"], f"{page['id']}.txt"
+                ),
+                "w",
+            ) as f:
+                f.write(new_text)
diff --git a/dan/datasets/extract/utils.py b/dan/datasets/extract/utils.py
new file mode 100644
index 00000000..72ab461b
--- /dev/null
+++ b/dan/datasets/extract/utils.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+"""
+    The utils module
+    ======================
+"""
+
+import argparse
+
+
+def get_cli_args():
+    """
+    Get the command-line arguments.
+    :return: The command-line arguments.
+    """
+    parser = argparse.ArgumentParser(
+        description="Arkindex DAN Training Label Generation"
+    )
+
+    # Required arguments.
+    parser.add_argument(
+        "--corpus",
+        type=str,
+        help="Name of the corpus from which the data will be retrieved.",
+        required=True,
+    )
+    parser.add_argument(
+        "--parents-types",
+        nargs="+",
+        type=str,
+        help="Type of parents of the elements.",
+        required=True,
+    )
+    parser.add_argument(
+        "--output-dir",
+        type=str,
+        help="Path to the output directory.",
+        required=True,
+    )
+
+    # Optional arguments.
+    parser.add_argument(
+        "--parents-names",
+        nargs="+",
+        type=str,
+        help="Names of parents of the elements.",
+        default=None,
+    )
+    return parser.parse_args()
diff --git a/dan/datasets/format/__init__.py b/dan/datasets/format/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/dan/datasets/format/generic.py b/dan/datasets/format/generic.py
new file mode 100644
index 00000000..8bdc7951
--- /dev/null
+++ b/dan/datasets/format/generic.py
@@ -0,0 +1,91 @@
+# -*- coding: utf-8 -*-
+import os
+import pickle
+import shutil
+
+import numpy as np
+from PIL import Image
+
+
+class DatasetFormatter:
+    """
+    Global pipeline/functions for dataset formatting
+    """
+
+    def __init__(
+        self, dataset_name, level, extra_name="", set_names=["train", "valid", "test"]
+    ):
+        self.dataset_name = dataset_name
+        self.level = level
+        self.set_names = set_names
+        self.target_fold_path = os.path.join(
+            "Datasets", "formatted", "{}_{}{}".format(dataset_name, level, extra_name)
+        )
+        self.map_datasets_files = dict()
+
+    def format(self):
+        self.init_format()
+        self.map_datasets_files[self.dataset_name][self.level]["format_function"]()
+        self.end_format()
+
+    def init_format(self):
+        """
+        Load and extracts needed files
+        """
+        os.makedirs(self.target_fold_path, exist_ok=True)
+
+        for set_name in self.set_names:
+            os.makedirs(os.path.join(self.target_fold_path, set_name), exist_ok=True)
+
+
+class OCRDatasetFormatter(DatasetFormatter):
+    """
+    Specific pipeline/functions for OCR/HTR dataset formatting
+    """
+
+    def __init__(
+        self, source_dataset, level, extra_name="", set_names=["train", "valid", "test"]
+    ):
+        super(OCRDatasetFormatter, self).__init__(
+            source_dataset, level, extra_name, set_names
+        )
+        self.charset = set()
+        self.gt = dict()
+        for set_name in set_names:
+            self.gt[set_name] = dict()
+
+    def load_resize_save(self, source_path, target_path):
+        """
+        Load image, apply resolution modification and save it
+        """
+        shutil.copyfile(source_path, target_path)
+
+    def resize(self, img, source_dpi, target_dpi):
+        """
+        Apply resolution modification to image
+        """
+        if source_dpi == target_dpi:
+            return img
+        if isinstance(img, np.ndarray):
+            h, w = img.shape[:2]
+            img = Image.fromarray(img)
+        else:
+            w, h = img.size
+        ratio = target_dpi / source_dpi
+        img = img.resize((int(w * ratio), int(h * ratio)), Image.BILINEAR)
+        return np.array(img)
+
+    def end_format(self):
+        """
+        Save label and charset files
+        """
+        with open(os.path.join(self.target_fold_path, "labels.pkl"), "wb") as f:
+            pickle.dump(
+                {
+                    "ground_truth": self.gt,
+                    "charset": sorted(list(self.charset)),
+                },
+                f,
+            )
+        with open(os.path.join(self.target_fold_path, "charset.pkl"), "wb") as f:
+            pickle.dump(sorted(list(self.charset)), f)
diff --git a/dan/datasets/format/simara.py b/dan/datasets/format/simara.py
new file mode 100644
index 00000000..2d81c31a
--- /dev/null
+++ b/dan/datasets/format/simara.py
@@ -0,0 +1,108 @@
+# -*- coding: utf-8 -*-
+import os
+from collections import defaultdict
+
+from tqdm import tqdm
+
+from dan.datasets.format.generic import OCRDatasetFormatter
+
+# Layout string to token
+SEM_MATCHING_TOKENS_STR = {
+    "INTITULE": "ⓘ",
+    "DATE": "â““",
+    "COTE_SERIE": "â“¢",
+    "ANALYSE_COMPL": "â“’",
+    "PRECISIONS_SUR_COTE": "ⓟ",
+    "COTE_ARTICLE": "ⓐ",
+}
+
+# Layout begin-token to end-token
+SEM_MATCHING_TOKENS = {"ⓘ": "Ⓘ", "ⓓ": "Ⓓ", "ⓢ": "Ⓢ", "ⓒ": "Ⓒ", "ⓟ": "Ⓟ", "ⓐ": "Ⓐ"}
+
+
+class SimaraDatasetFormatter(OCRDatasetFormatter):
+    def __init__(
+        self, level, set_names=["train", "valid", "test"], dpi=150, sem_token=True
+    ):
+        super(SimaraDatasetFormatter, self).__init__(
+            "simara", level, "_sem" if sem_token else "", set_names
+        )
+
+        self.dpi = dpi
+        self.sem_token = sem_token
+        self.map_datasets_files.update(
+            {
+                "simara": {
+                    # (1,050 for train, 100 for validation and 100 for test)
+                    "page": {
+                        "format_function": self.format_simara_page,
+                    },
+                }
+            }
+        )
+        self.matching_tokens_str = SEM_MATCHING_TOKENS_STR
+        self.matching_tokens = SEM_MATCHING_TOKENS
+
+    def preformat_simara_page(self):
+        """
+        Extract all information from dataset and correct some annotations
+        """
+        dataset = defaultdict(list)
+        img_folder_path = os.path.join("Datasets", "raw", "simara", "images")
+        labels_folder_path = os.path.join("Datasets", "raw", "simara", "labels")
+        sem_labels_folder_path = os.path.join("Datasets", "raw", "simara", "labels_sem")
+        train_files = [
+            os.path.join(labels_folder_path, "train", name)
+            for name in os.listdir(os.path.join(sem_labels_folder_path, "train"))
+        ]
+        valid_files = [
+            os.path.join(labels_folder_path, "valid", name)
+            for name in os.listdir(os.path.join(sem_labels_folder_path, "valid"))
+        ]
+        test_files = [
+            os.path.join(labels_folder_path, "test", name)
+            for name in os.listdir(os.path.join(sem_labels_folder_path, "test"))
+        ]
+        for set_name, files in zip(
+            self.set_names, [train_files, valid_files, test_files]
+        ):
+            for i, label_file in enumerate(
+                tqdm(files, desc="Pre-formatting " + set_name)
+            ):
+                with open(label_file, "r") as f:
+                    text = f.read()
+                with open(label_file.replace("labels", "labels_sem"), "r") as f:
+                    sem_text = f.read()
+                dataset[set_name].append(
+                    {
+                        "img_path": os.path.join(
+                            img_folder_path,
+                            set_name,
+                            label_file.split("/")[-1].replace("txt", "jpg"),
+                        ),
+                        "label": text,
+                        "sem_label": sem_text,
+                    }
+                )
+        return dataset
+
+    def format_simara_page(self):
+        """
+        Format simara page dataset
+        """
+        dataset = self.preformat_simara_page()
+        for set_name in self.set_names:
+            fold = os.path.join(self.target_fold_path, set_name)
+            for sample in tqdm(dataset[set_name], desc="Formatting " + set_name):
+                new_name = sample["img_path"].split("/")[-1]
+                new_img_path = os.path.join(fold, new_name)
+                self.load_resize_save(
+                    sample["img_path"], new_img_path
+                )  # , 300, self.dpi)
+                page = {
+                    "text": sample["label"]
+                    if not self.sem_token
+                    else sample["sem_label"],
+                }
+                self.charset = self.charset.union(set(page["text"]))
+                self.gt[set_name][new_name] = page
diff --git a/dan/datasets/utils.py b/dan/datasets/utils.py
new file mode 100644
index 00000000..c911cc9b
--- /dev/null
+++ b/dan/datasets/utils.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+import re
+
+
+def convert(text):
+    return int(text) if text.isdigit() else text.lower()
+
+
+def natural_sort(data):
+    return sorted(data, key=lambda key: [convert(c) for c in re.split("([0-9]+)", key)])
diff --git a/dan/decoder.py b/dan/decoder.py
index aa811235..d2070fc6 100644
--- a/dan/decoder.py
+++ b/dan/decoder.py
@@ -79,9 +79,6 @@ class PositionalEncoding2D(Module):
         """
         return x + self.pe[:, :, : x.size(2), : x.size(3)]
 
-    def get_pe_by_size(self, h, w, device):
-        return self.pe[:, :, :h, :w].to(device)
-
 
 class CustomMultiHeadAttention(Module):
     """
diff --git a/dan/manager/__init__.py b/dan/manager/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/dan/manager/dataset.py b/dan/manager/dataset.py
new file mode 100644
index 00000000..64633ebe
--- /dev/null
+++ b/dan/manager/dataset.py
@@ -0,0 +1,441 @@
+# -*- coding: utf-8 -*-
+import os
+import pickle
+import random
+
+import cv2
+import numpy as np
+import torch
+from PIL import Image
+from torch.utils.data import DataLoader, Dataset
+from torch.utils.data.distributed import DistributedSampler
+
+from dan.datasets.utils import natural_sort
+from dan.transforms import apply_data_augmentation
+
+
+class DatasetManager:
+    def __init__(self, params):
+        self.params = params
+        self.dataset_class = params["dataset_class"]
+        self.img_padding_value = params["config"]["padding_value"]
+
+        self.my_collate_function = None
+
+        self.train_dataset = None
+        self.valid_datasets = dict()
+        self.test_datasets = dict()
+
+        self.train_loader = None
+        self.valid_loaders = dict()
+        self.test_loaders = dict()
+
+        self.train_sampler = None
+        self.valid_samplers = dict()
+        self.test_samplers = dict()
+
+        self.generator = torch.Generator()
+        self.generator.manual_seed(0)
+
+        self.batch_size = {
+            "train": self.params["batch_size"],
+            "valid": self.params["valid_batch_size"]
+            if "valid_batch_size" in self.params
+            else self.params["batch_size"],
+            "test": self.params["test_batch_size"]
+            if "test_batch_size" in self.params
+            else 1,
+        }
+
+    def apply_specific_treatment_after_dataset_loading(self, dataset):
+        raise NotImplementedError
+
+    def load_datasets(self):
+        """
+        Load training and validation datasets
+        """
+        self.train_dataset = self.dataset_class(
+            self.params,
+            "train",
+            self.params["train"]["name"],
+            self.get_paths_and_sets(self.params["train"]["datasets"]),
+        )
+        (
+            self.params["config"]["mean"],
+            self.params["config"]["std"],
+        ) = self.train_dataset.compute_std_mean()
+
+        self.my_collate_function = self.train_dataset.collate_function(
+            self.params["config"]
+        )
+        self.apply_specific_treatment_after_dataset_loading(self.train_dataset)
+
+        for custom_name in self.params["valid"].keys():
+            self.valid_datasets[custom_name] = self.dataset_class(
+                self.params,
+                "valid",
+                custom_name,
+                self.get_paths_and_sets(self.params["valid"][custom_name]),
+            )
+            self.apply_specific_treatment_after_dataset_loading(
+                self.valid_datasets[custom_name]
+            )
+
+    def load_ddp_samplers(self):
+        """
+        Load training and validation data samplers
+        """
+        if self.params["use_ddp"]:
+            self.train_sampler = DistributedSampler(
+                self.train_dataset,
+                num_replicas=self.params["num_gpu"],
+                rank=self.params["ddp_rank"],
+                shuffle=True,
+            )
+            for custom_name in self.valid_datasets.keys():
+                self.valid_samplers[custom_name] = DistributedSampler(
+                    self.valid_datasets[custom_name],
+                    num_replicas=self.params["num_gpu"],
+                    rank=self.params["ddp_rank"],
+                    shuffle=False,
+                )
+        else:
+            for custom_name in self.valid_datasets.keys():
+                self.valid_samplers[custom_name] = None
+
+    def load_dataloaders(self):
+        """
+        Load training and validation data loaders
+        """
+        self.train_loader = DataLoader(
+            self.train_dataset,
+            batch_size=self.batch_size["train"],
+            shuffle=True if self.train_sampler is None else False,
+            drop_last=False,
+            batch_sampler=self.train_sampler,
+            sampler=self.train_sampler,
+            num_workers=self.params["num_gpu"] * self.params["worker_per_gpu"],
+            pin_memory=True,
+            collate_fn=self.my_collate_function,
+            worker_init_fn=self.seed_worker,
+            generator=self.generator,
+        )
+
+        for key in self.valid_datasets.keys():
+            self.valid_loaders[key] = DataLoader(
+                self.valid_datasets[key],
+                batch_size=self.batch_size["valid"],
+                sampler=self.valid_samplers[key],
+                batch_sampler=self.valid_samplers[key],
+                shuffle=False,
+                num_workers=self.params["num_gpu"] * self.params["worker_per_gpu"],
+                pin_memory=True,
+                drop_last=False,
+                collate_fn=self.my_collate_function,
+                worker_init_fn=self.seed_worker,
+                generator=self.generator,
+            )
+
+    @staticmethod
+    def seed_worker(worker_id):
+        worker_seed = torch.initial_seed() % 2**32
+        np.random.seed(worker_seed)
+        random.seed(worker_seed)
+
+    def generate_test_loader(self, custom_name, sets_list):
+        """
+        Load test dataset, data sampler and data loader
+        """
+        if custom_name in self.test_loaders.keys():
+            return
+        paths_and_sets = list()
+        for set_info in sets_list:
+            paths_and_sets.append(
+                {"path": self.params["datasets"][set_info[0]], "set_name": set_info[1]}
+            )
+        self.test_datasets[custom_name] = self.dataset_class(
+            self.params, "test", custom_name, paths_and_sets
+        )
+        self.apply_specific_treatment_after_dataset_loading(
+            self.test_datasets[custom_name]
+        )
+        if self.params["use_ddp"]:
+            self.test_samplers[custom_name] = DistributedSampler(
+                self.test_datasets[custom_name],
+                num_replicas=self.params["num_gpu"],
+                rank=self.params["ddp_rank"],
+                shuffle=False,
+            )
+        else:
+            self.test_samplers[custom_name] = None
+        self.test_loaders[custom_name] = DataLoader(
+            self.test_datasets[custom_name],
+            batch_size=self.batch_size["test"],
+            sampler=self.test_samplers[custom_name],
+            shuffle=False,
+            num_workers=self.params["num_gpu"] * self.params["worker_per_gpu"],
+            pin_memory=True,
+            drop_last=False,
+            collate_fn=self.my_collate_function,
+            worker_init_fn=self.seed_worker,
+            generator=self.generator,
+        )
+
+    def get_paths_and_sets(self, dataset_names_folds):
+        paths_and_sets = list()
+        for dataset_name, fold in dataset_names_folds:
+            path = self.params["datasets"][dataset_name]
+            paths_and_sets.append({"path": path, "set_name": fold})
+        return paths_and_sets
+
+
+class GenericDataset(Dataset):
+    """
+    Main class to handle dataset loading
+    """
+
+    def __init__(self, params, set_name, custom_name, paths_and_sets):
+        self.params = params
+        self.name = custom_name
+        self.set_name = set_name
+        self.mean = (
+            np.array(params["config"]["mean"])
+            if "mean" in params["config"].keys()
+            else None
+        )
+        self.std = (
+            np.array(params["config"]["std"])
+            if "std" in params["config"].keys()
+            else None
+        )
+
+        self.load_in_memory = (
+            self.params["config"]["load_in_memory"]
+            if "load_in_memory" in self.params["config"]
+            else True
+        )
+
+        self.samples = self.load_samples(
+            paths_and_sets, load_in_memory=self.load_in_memory
+        )
+
+        if self.load_in_memory:
+            self.apply_preprocessing(params["config"]["preprocessings"])
+
+        self.padding_value = params["config"]["padding_value"]
+        if self.padding_value == "mean":
+            if self.mean is None:
+                _, _ = self.compute_std_mean()
+            self.padding_value = self.mean
+            self.params["config"]["padding_value"] = self.padding_value
+
+        self.curriculum_config = None
+        self.training_info = None
+
+    def __len__(self):
+        return len(self.samples)
+
+    @staticmethod
+    def load_image(path):
+        with Image.open(path) as pil_img:
+            img = np.array(pil_img)
+            # grayscale images
+            if len(img.shape) == 2:
+                img = np.expand_dims(img, axis=2)
+        return img
+
+    @staticmethod
+    def load_samples(paths_and_sets, load_in_memory=True):
+        """
+        Load images and labels
+        """
+        samples = list()
+        for path_and_set in paths_and_sets:
+            path = path_and_set["path"]
+            set_name = path_and_set["set_name"]
+            with open(os.path.join(path, "labels.pkl"), "rb") as f:
+                info = pickle.load(f)
+                gt = info["ground_truth"][set_name]
+                for filename in natural_sort(gt.keys()):
+                    name = os.path.join(os.path.basename(path), set_name, filename)
+                    full_path = os.path.join(path, set_name, filename)
+                    if isinstance(gt[filename], dict) and "text" in gt[filename]:
+                        label = gt[filename]["text"]
+                    else:
+                        label = gt[filename]
+                    samples.append(
+                        {
+                            "name": name,
+                            "label": label,
+                            "unchanged_label": label,
+                            "path": full_path,
+                            "nb_cols": 1
+                            if "nb_cols" not in gt[filename]
+                            else gt[filename]["nb_cols"],
+                        }
+                    )
+                    if load_in_memory:
+                        samples[-1]["img"] = GenericDataset.load_image(full_path)
+                    if type(gt[filename]) is dict:
+                        if "lines" in gt[filename].keys():
+                            samples[-1]["raw_line_seg_label"] = gt[filename]["lines"]
+                        if "paragraphs" in gt[filename].keys():
+                            samples[-1]["paragraphs_label"] = gt[filename]["paragraphs"]
+                        if "pages" in gt[filename].keys():
+                            samples[-1]["pages_label"] = gt[filename]["pages"]
+        return samples
+
+    def apply_preprocessing(self, preprocessings):
+        for i in range(len(self.samples)):
+            self.samples[i] = apply_preprocessing(self.samples[i], preprocessings)
+
+    def compute_std_mean(self):
+        """
+        Compute cumulated variance and mean of whole dataset
+        """
+        if self.mean is not None and self.std is not None:
+            return self.mean, self.std
+        if not self.load_in_memory:
+            sample = self.samples[0].copy()
+            sample["img"] = self.get_sample_img(0)
+            img = apply_preprocessing(sample, self.params["config"]["preprocessings"])[
+                "img"
+            ]
+        else:
+            img = self.get_sample_img(0)
+        _, _, c = img.shape
+        sum = np.zeros((c,))
+        nb_pixels = 0
+
+        for i in range(len(self.samples)):
+            if not self.load_in_memory:
+                sample = self.samples[i].copy()
+                sample["img"] = self.get_sample_img(i)
+                img = apply_preprocessing(
+                    sample, self.params["config"]["preprocessings"]
+                )["img"]
+            else:
+                img = self.get_sample_img(i)
+            sum += np.sum(img, axis=(0, 1))
+            nb_pixels += np.prod(img.shape[:2])
+        mean = sum / nb_pixels
+        diff = np.zeros((c,))
+        for i in range(len(self.samples)):
+            if not self.load_in_memory:
+                sample = self.samples[i].copy()
+                sample["img"] = self.get_sample_img(i)
+                img = apply_preprocessing(
+                    sample, self.params["config"]["preprocessings"]
+                )["img"]
+            else:
+                img = self.get_sample_img(i)
+            diff += [np.sum((img[:, :, k] - mean[k]) ** 2) for k in range(c)]
+        std = np.sqrt(diff / nb_pixels)
+
+        self.mean = mean
+        self.std = std
+        return mean, std
+
+    def apply_data_augmentation(self, img):
+        """
+        Apply data augmentation strategy on the input image
+        """
+        augs = [
+            self.params["config"][key] if key in self.params["config"].keys() else None
+            for key in ["augmentation", "valid_augmentation", "test_augmentation"]
+        ]
+        for aug, set_name in zip(augs, ["train", "valid", "test"]):
+            if aug and self.set_name == set_name:
+                return apply_data_augmentation(img, aug)
+        return img, list()
+
+    def get_sample_img(self, i):
+        """
+        Get image by index
+        """
+        if self.load_in_memory:
+            return self.samples[i]["img"]
+        else:
+            return GenericDataset.load_image(self.samples[i]["path"])
+
+
+def apply_preprocessing(sample, preprocessings):
+    """
+    Apply preprocessings on each sample
+    """
+    resize_ratio = [1, 1]
+    img = sample["img"]
+    for preprocessing in preprocessings:
+
+        if preprocessing["type"] == "dpi":
+            ratio = preprocessing["target"] / preprocessing["source"]
+            temp_img = img
+            h, w, c = temp_img.shape
+            temp_img = cv2.resize(
+                temp_img, (int(np.ceil(w * ratio)), int(np.ceil(h * ratio)))
+            )
+            if len(temp_img.shape) == 2:
+                temp_img = np.expand_dims(temp_img, axis=2)
+            img = temp_img
+
+            resize_ratio = [ratio, ratio]
+
+        if preprocessing["type"] == "to_grayscaled":
+            temp_img = img
+            h, w, c = temp_img.shape
+            if c == 3:
+                img = np.expand_dims(
+                    0.2125 * temp_img[:, :, 0]
+                    + 0.7154 * temp_img[:, :, 1]
+                    + 0.0721 * temp_img[:, :, 2],
+                    axis=2,
+                ).astype(np.uint8)
+
+        if preprocessing["type"] == "to_RGB":
+            temp_img = img
+            h, w, c = temp_img.shape
+            if c == 1:
+                img = np.concatenate([temp_img, temp_img, temp_img], axis=2)
+
+        if preprocessing["type"] == "resize":
+            keep_ratio = preprocessing["keep_ratio"]
+            max_h, max_w = preprocessing["max_height"], preprocessing["max_width"]
+            temp_img = img
+            h, w, c = temp_img.shape
+
+            ratio_h = max_h / h if max_h else 1
+            ratio_w = max_w / w if max_w else 1
+            if keep_ratio:
+                ratio_h = ratio_w = min(ratio_w, ratio_h)
+            new_h = min(max_h, int(h * ratio_h))
+            new_w = min(max_w, int(w * ratio_w))
+            temp_img = cv2.resize(temp_img, (new_w, new_h))
+            if len(temp_img.shape) == 2:
+                temp_img = np.expand_dims(temp_img, axis=2)
+
+            img = temp_img
+            resize_ratio = [ratio_h, ratio_w]
+
+        if preprocessing["type"] == "fixed_height":
+            new_h = preprocessing["height"]
+            temp_img = img
+            h, w, c = temp_img.shape
+            ratio = new_h / h
+            temp_img = cv2.resize(temp_img, (int(w * ratio), new_h))
+            if len(temp_img.shape) == 2:
+                temp_img = np.expand_dims(temp_img, axis=2)
+            img = temp_img
+            resize_ratio = [ratio, ratio]
+    if resize_ratio != [1, 1] and "raw_line_seg_label" in sample:
+        for li in range(len(sample["raw_line_seg_label"])):
+            for side, ratio in zip(
+                (["bottom", "top"], ["right", "left"]), resize_ratio
+            ):
+                for s in side:
+                    sample["raw_line_seg_label"][li][s] = (
+                        sample["raw_line_seg_label"][li][s] * ratio
+                    )
+
+    sample["img"] = img
+    sample["resize_ratio"] = resize_ratio
+    return sample
diff --git a/dan/manager/metrics.py b/dan/manager/metrics.py
new file mode 100644
index 00000000..3bb572b2
--- /dev/null
+++ b/dan/manager/metrics.py
@@ -0,0 +1,522 @@
+# -*- coding: utf-8 -*-
+import re
+
+import editdistance
+import networkx as nx
+import numpy as np
+
+from dan.datasets.format.simara import SEM_MATCHING_TOKENS as SIMARA_MATCHING_TOKENS
+from dan.post_processing import PostProcessingModuleSIMARA
+
+
+class MetricManager:
+    def __init__(self, metric_names, dataset_name):
+        self.dataset_name = dataset_name
+
+        if "simara" in dataset_name and "page" in dataset_name:
+            self.post_processing_module = PostProcessingModuleSIMARA
+            self.matching_tokens = SIMARA_MATCHING_TOKENS
+            self.edit_and_num_edge_nodes = edit_and_num_items_for_ged_from_str_simara
+        else:
+            self.matching_tokens = dict()
+
+        self.layout_tokens = "".join(
+            list(self.matching_tokens.keys()) + list(self.matching_tokens.values())
+        )
+        if len(self.layout_tokens) == 0:
+            self.layout_tokens = None
+        self.metric_names = metric_names
+        self.epoch_metrics = None
+
+        self.linked_metrics = {
+            "cer": ["edit_chars", "nb_chars"],
+            "wer": ["edit_words", "nb_words"],
+            "loer": [
+                "edit_graph",
+                "nb_nodes_and_edges",
+                "nb_pp_op_layout",
+                "nb_gt_layout_token",
+            ],
+            "precision": ["precision", "weights"],
+            "map_cer_per_class": [
+                "map_cer",
+            ],
+            "layout_precision_per_class_per_threshold": [
+                "map_cer",
+            ],
+        }
+
+        self.init_metrics()
+
+    def init_metrics(self):
+        """
+        Initialization of the metrics specified in metrics_name
+        """
+        self.epoch_metrics = {
+            "nb_samples": list(),
+            "names": list(),
+            "ids": list(),
+        }
+
+        for metric_name in self.metric_names:
+            if metric_name in self.linked_metrics:
+                for linked_metric_name in self.linked_metrics[metric_name]:
+                    if linked_metric_name not in self.epoch_metrics.keys():
+                        self.epoch_metrics[linked_metric_name] = list()
+            else:
+                self.epoch_metrics[metric_name] = list()
+
+    def update_metrics(self, batch_metrics):
+        """
+        Add batch metrics to the metrics
+        """
+        for key in batch_metrics.keys():
+            if key in self.epoch_metrics:
+                self.epoch_metrics[key] += batch_metrics[key]
+
+    def get_display_values(self, output=False):
+        """
+        format metrics values for shell display purposes
+        """
+        metric_names = self.metric_names.copy()
+        if output:
+            metric_names.extend(["nb_samples"])
+        display_values = dict()
+        for metric_name in metric_names:
+            value = None
+            if output:
+                if metric_name in ["nb_samples", "weights"]:
+                    value = np.sum(self.epoch_metrics[metric_name])
+                elif metric_name in [
+                    "time",
+                ]:
+                    total_time = np.sum(self.epoch_metrics[metric_name])
+                    sample_time = total_time / np.sum(self.epoch_metrics["nb_samples"])
+                    display_values["sample_time"] = round(sample_time, 4)
+                    value = total_time
+                elif metric_name == "loer":
+                    display_values["pper"] = round(
+                        np.sum(self.epoch_metrics["nb_pp_op_layout"])
+                        / np.sum(self.epoch_metrics["nb_gt_layout_token"]),
+                        4,
+                    )
+                elif metric_name == "map_cer_per_class":
+                    value = compute_global_mAP_per_class(self.epoch_metrics["map_cer"])
+                    for key in value.keys():
+                        display_values["map_cer_" + key] = round(value[key], 4)
+                    continue
+                elif metric_name == "layout_precision_per_class_per_threshold":
+                    value = compute_global_precision_per_class_per_threshold(
+                        self.epoch_metrics["map_cer"]
+                    )
+                    for key_class in value.keys():
+                        for threshold in value[key_class].keys():
+                            display_values[
+                                "map_cer_{}_{}".format(key_class, threshold)
+                            ] = round(value[key_class][threshold], 4)
+                    continue
+            if metric_name == "cer":
+                value = np.sum(self.epoch_metrics["edit_chars"]) / np.sum(
+                    self.epoch_metrics["nb_chars"]
+                )
+                if output:
+                    display_values["nb_chars"] = np.sum(self.epoch_metrics["nb_chars"])
+            elif metric_name == "wer":
+                value = np.sum(self.epoch_metrics["edit_words"]) / np.sum(
+                    self.epoch_metrics["nb_words"]
+                )
+                if output:
+                    display_values["nb_words"] = np.sum(self.epoch_metrics["nb_words"])
+            elif metric_name in ["loss", "loss_ctc", "loss_ce", "syn_max_lines"]:
+                value = np.average(
+                    self.epoch_metrics[metric_name],
+                    weights=np.array(self.epoch_metrics["nb_samples"]),
+                )
+            elif metric_name == "map_cer":
+                value = compute_global_mAP(self.epoch_metrics[metric_name])
+            elif metric_name == "loer":
+                value = np.sum(self.epoch_metrics["edit_graph"]) / np.sum(
+                    self.epoch_metrics["nb_nodes_and_edges"]
+                )
+            elif value is None:
+                continue
+
+            display_values[metric_name] = round(value, 4)
+        return display_values
+
+    def compute_metrics(self, values, metric_names):
+        metrics = {
+            "nb_samples": [
+                values["nb_samples"],
+            ],
+        }
+        for v in ["weights", "time"]:
+            if v in values:
+                metrics[v] = [values[v]]
+        for metric_name in metric_names:
+            if metric_name == "cer":
+                metrics["edit_chars"] = [
+                    edit_cer_from_string(u, v, self.layout_tokens)
+                    for u, v in zip(values["str_y"], values["str_x"])
+                ]
+                metrics["nb_chars"] = [
+                    nb_chars_cer_from_string(gt, self.layout_tokens)
+                    for gt in values["str_y"]
+                ]
+            elif metric_name == "wer":
+                split_gt = [
+                    format_string_for_wer(gt, self.layout_tokens)
+                    for gt in values["str_y"]
+                ]
+                split_pred = [
+                    format_string_for_wer(pred, self.layout_tokens)
+                    for pred in values["str_x"]
+                ]
+                metrics["edit_words"] = [
+                    edit_wer_from_formatted_split_text(gt, pred)
+                    for (gt, pred) in zip(split_gt, split_pred)
+                ]
+                metrics["nb_words"] = [len(gt) for gt in split_gt]
+            elif metric_name in [
+                "loss_ctc",
+                "loss_ce",
+                "loss",
+                "syn_max_lines",
+            ]:
+                metrics[metric_name] = [
+                    values[metric_name],
+                ]
+            elif metric_name == "map_cer":
+                pp_pred = list()
+                pp_score = list()
+                for pred, score in zip(values["str_x"], values["confidence_score"]):
+                    pred_score = self.post_processing_module().post_process(pred, score)
+                    pp_pred.append(pred_score[0])
+                    pp_score.append(pred_score[1])
+                metrics[metric_name] = [
+                    compute_layout_mAP_per_class(y, x, conf, self.matching_tokens)
+                    for x, conf, y in zip(pp_pred, pp_score, values["str_y"])
+                ]
+            elif metric_name == "loer":
+                pp_pred = list()
+                metrics["nb_pp_op_layout"] = list()
+                for pred in values["str_x"]:
+                    pp_module = self.post_processing_module()
+                    pp_pred.append(pp_module.post_process(pred))
+                    metrics["nb_pp_op_layout"].append(pp_module.num_op)
+                metrics["nb_gt_layout_token"] = [
+                    len(keep_only_tokens(str_x, self.layout_tokens))
+                    for str_x in values["str_x"]
+                ]
+                edit_and_num_items = [
+                    self.edit_and_num_edge_nodes(y, x)
+                    for x, y in zip(pp_pred, values["str_y"])
+                ]
+                metrics["edit_graph"], metrics["nb_nodes_and_edges"] = [
+                    ei[0] for ei in edit_and_num_items
+                ], [ei[1] for ei in edit_and_num_items]
+        return metrics
+
+    def get(self, name):
+        return self.epoch_metrics[name]
+
+
+def keep_only_tokens(str, tokens):
+    """
+    Remove all but layout tokens from string
+    """
+    return re.sub("([^" + tokens + "])", "", str)
+
+
+def keep_all_but_tokens(str, tokens):
+    """
+    Remove all layout tokens from string
+    """
+    return re.sub("([" + tokens + "])", "", str)
+
+
+def edit_cer_from_string(gt, pred, layout_tokens=None):
+    """
+    Format and compute edit distance between two strings at character level
+    """
+    gt = format_string_for_cer(gt, layout_tokens)
+    pred = format_string_for_cer(pred, layout_tokens)
+    return editdistance.eval(gt, pred)
+
+
+def nb_chars_cer_from_string(gt, layout_tokens=None):
+    """
+    Compute length after formatting of ground truth string
+    """
+    return len(format_string_for_cer(gt, layout_tokens))
+
+
+def edit_wer_from_string(gt, pred, layout_tokens=None):
+    """
+    Format and compute edit distance between two strings at word level
+    """
+    split_gt = format_string_for_wer(gt, layout_tokens)
+    split_pred = format_string_for_wer(pred, layout_tokens)
+    return edit_wer_from_formatted_split_text(split_gt, split_pred)
+
+
+def format_string_for_wer(str, layout_tokens):
+    """
+    Format string for WER computation: remove layout tokens, treat punctuation as word, replace line break by space
+    """
+    str = re.sub(
+        r"([\[\]{}/\\()\"'&+*=<>?.;:,!\-—_€#%°])", r" \1 ", str
+    )  # punctuation processed as word
+    if layout_tokens is not None:
+        str = keep_all_but_tokens(
+            str, layout_tokens
+        )  # remove layout tokens from metric
+    str = re.sub("([ \n])+", " ", str).strip()  # keep only one space character
+    return str.split(" ")
+
+
+def format_string_for_cer(str, layout_tokens):
+    """
+    Format string for CER computation: remove layout tokens and extra spaces
+    """
+    if layout_tokens is not None:
+        str = keep_all_but_tokens(
+            str, layout_tokens
+        )  # remove layout tokens from metric
+    str = re.sub("([\n])+", "\n", str)  # remove consecutive line breaks
+    str = re.sub("([ ])+", " ", str).strip()  # remove consecutive spaces
+    return str
+
+
+def edit_wer_from_formatted_split_text(gt, pred):
+    """
+    Compute edit distance at word level from formatted string as list
+    """
+    return editdistance.eval(gt, pred)
+
+
+def extract_by_tokens(
+    input_str, begin_token, end_token, associated_score=None, order_by_score=False
+):
+    """
+    Extract list of text regions by begin and end tokens
+    Order the list by confidence score
+    """
+    if order_by_score:
+        assert associated_score is not None
+    res = list()
+    for match in re.finditer(
+        "{}[^{}]*{}".format(begin_token, end_token, end_token), input_str
+    ):
+        begin, end = match.regs[0]
+        if order_by_score:
+            res.append(
+                {
+                    "confidence": np.mean(
+                        [associated_score[begin], associated_score[end - 1]]
+                    ),
+                    "content": input_str[begin + 1 : end - 1],
+                }
+            )
+        else:
+            res.append(input_str[begin + 1 : end - 1])
+    if order_by_score:
+        res = sorted(res, key=lambda x: x["confidence"], reverse=True)
+        res = [r["content"] for r in res]
+    return res
+
+
+def compute_layout_precision_per_threshold(
+    gt, pred, score, begin_token, end_token, layout_tokens, return_weight=True
+):
+    """
+    Compute average precision of a given class for CER threshold from 5% to 50% with a step of 5%
+    """
+    pred_list = extract_by_tokens(
+        pred, begin_token, end_token, associated_score=score, order_by_score=True
+    )
+    gt_list = extract_by_tokens(gt, begin_token, end_token)
+    pred_list = [keep_all_but_tokens(p, layout_tokens) for p in pred_list]
+    gt_list = [keep_all_but_tokens(gt, layout_tokens) for gt in gt_list]
+    precision_per_threshold = [
+        compute_layout_AP_for_given_threshold(gt_list, pred_list, threshold / 100)
+        for threshold in range(5, 51, 5)
+    ]
+    if return_weight:
+        return precision_per_threshold, len(gt_list)
+    return precision_per_threshold
+
+
+def compute_layout_AP_for_given_threshold(gt_list, pred_list, threshold):
+    """
+    Compute average precision of a given class for a given CER threshold
+    """
+    remaining_gt_list = gt_list.copy()
+    num_true = len(gt_list)
+    correct = np.zeros((len(pred_list)), dtype=np.bool)
+    for i, pred in enumerate(pred_list):
+        if len(remaining_gt_list) == 0:
+            break
+        cer_with_gt = [
+            edit_cer_from_string(gt, pred) / nb_chars_cer_from_string(gt)
+            for gt in remaining_gt_list
+        ]
+        cer, ind = np.min(cer_with_gt), np.argmin(cer_with_gt)
+        if cer <= threshold:
+            correct[i] = True
+            del remaining_gt_list[ind]
+    precision = np.cumsum(correct, dtype=np.int) / np.arange(1, len(pred_list) + 1)
+    recall = np.cumsum(correct, dtype=np.int) / num_true
+    max_precision_from_recall = np.maximum.accumulate(precision[::-1])[::-1]
+    recall_diff = recall - np.concatenate(
+        [
+            np.array(
+                [
+                    0,
+                ]
+            ),
+            recall[:-1],
+        ]
+    )
+    P = np.sum(recall_diff * max_precision_from_recall)
+    return P
+
+
+def compute_layout_mAP_per_class(gt, pred, score, tokens):
+    """
+    Compute the mAP_cer for each class for a given sample
+    """
+    layout_tokens = "".join(list(tokens.keys()))
+    AP_per_class = dict()
+    for token in tokens.keys():
+        if token in gt:
+            AP_per_class[token] = compute_layout_precision_per_threshold(
+                gt, pred, score, token, tokens[token], layout_tokens=layout_tokens
+            )
+    return AP_per_class
+
+
+def compute_global_mAP(list_AP_per_class):
+    """
+    Compute the global mAP_cer for several samples
+    """
+    weights_per_doc = list()
+    mAP_per_doc = list()
+    for doc_AP_per_class in list_AP_per_class:
+        APs = np.array(
+            [np.mean(doc_AP_per_class[key][0]) for key in doc_AP_per_class.keys()]
+        )
+        weights = np.array(
+            [doc_AP_per_class[key][1] for key in doc_AP_per_class.keys()]
+        )
+        if np.sum(weights) == 0:
+            mAP_per_doc.append(0)
+        else:
+            mAP_per_doc.append(np.average(APs, weights=weights))
+        weights_per_doc.append(np.sum(weights))
+    if np.sum(weights_per_doc) == 0:
+        return 0
+    return np.average(mAP_per_doc, weights=weights_per_doc)
+
+
+def compute_global_mAP_per_class(list_AP_per_class):
+    """
+    Compute the mAP_cer per class for several samples
+    """
+    mAP_per_class = dict()
+    for doc_AP_per_class in list_AP_per_class:
+        for key in doc_AP_per_class.keys():
+            if key not in mAP_per_class:
+                mAP_per_class[key] = {"AP": list(), "weights": list()}
+            mAP_per_class[key]["AP"].append(np.mean(doc_AP_per_class[key][0]))
+            mAP_per_class[key]["weights"].append(doc_AP_per_class[key][1])
+    for key in mAP_per_class.keys():
+        mAP_per_class[key] = np.average(
+            mAP_per_class[key]["AP"], weights=mAP_per_class[key]["weights"]
+        )
+    return mAP_per_class
+
+
+def compute_global_precision_per_class_per_threshold(list_AP_per_class):
+    """
+    Compute the mAP_cer per class and per threshold for several samples
+    """
+    mAP_per_class = dict()
+    for doc_AP_per_class in list_AP_per_class:
+        for key in doc_AP_per_class.keys():
+            if key not in mAP_per_class:
+                mAP_per_class[key] = dict()
+                for threshold in range(5, 51, 5):
+                    mAP_per_class[key][threshold] = {
+                        "precision": list(),
+                        "weights": list(),
+                    }
+            for i, threshold in enumerate(range(5, 51, 5)):
+                mAP_per_class[key][threshold]["precision"].append(
+                    np.mean(doc_AP_per_class[key][0][i])
+                )
+                mAP_per_class[key][threshold]["weights"].append(
+                    doc_AP_per_class[key][1]
+                )
+    for key_class in mAP_per_class.keys():
+        for threshold in mAP_per_class[key_class]:
+            mAP_per_class[key_class][threshold] = np.average(
+                mAP_per_class[key_class][threshold]["precision"],
+                weights=mAP_per_class[key_class][threshold]["weights"],
+            )
+    return mAP_per_class
+
+
+def str_to_graph_simara(str):
+    """
+    Compute graph from string of layout tokens for the SIMARA dataset at page level
+    """
+    begin_layout_tokens = "".join(list(SIMARA_MATCHING_TOKENS.keys()))
+    layout_token_sequence = keep_only_tokens(str, begin_layout_tokens)
+    g = nx.DiGraph()
+    g.add_node("D", type="document", level=2, page=0)
+    token_name_dict = {"ⓘ": "I", "ⓓ": "D", "ⓢ": "S", "ⓒ": "C", "ⓟ": "P", "ⓐ": "A"}
+    num = dict()
+    previous_node = None
+    for token in begin_layout_tokens:
+        num[token] = 0
+    for ind, c in enumerate(layout_token_sequence):
+        num[c] += 1
+        node_name = "{}_{}".format(token_name_dict[c], num[c])
+        g.add_node(node_name, type=token_name_dict[c], level=1, page=0)
+        g.add_edge("D", node_name)
+        if previous_node:
+            g.add_edge(previous_node, node_name)
+        previous_node = node_name
+    return g
+
+
+def graph_edit_distance(g1, g2):
+    """
+    Compute graph edit distance between two graphs
+    """
+    for v in nx.optimize_graph_edit_distance(
+        g1,
+        g2,
+        node_ins_cost=lambda node: 1,
+        node_del_cost=lambda node: 1,
+        node_subst_cost=lambda node1, node2: 0 if node1["type"] == node2["type"] else 1,
+        edge_ins_cost=lambda edge: 1,
+        edge_del_cost=lambda edge: 1,
+        edge_subst_cost=lambda edge1, edge2: 0 if edge1 == edge2 else 1,
+    ):
+        new_edit = v
+    return new_edit
+
+
+def edit_and_num_items_for_ged_from_str_simara(str_gt, str_pred):
+    """
+    Compute graph edit distance and num nodes/edges for normalized graph edit distance
+    For the SIMARA dataset
+    """
+    g_gt = str_to_graph_simara(str_gt)
+    g_pred = str_to_graph_simara(str_pred)
+    return (
+        graph_edit_distance(g_gt, g_pred),
+        g_gt.number_of_nodes() + g_gt.number_of_edges(),
+    )
diff --git a/dan/manager/ocr.py b/dan/manager/ocr.py
new file mode 100644
index 00000000..71463042
--- /dev/null
+++ b/dan/manager/ocr.py
@@ -0,0 +1,640 @@
+# -*- coding: utf-8 -*-
+import copy
+import os
+import pickle
+
+import cv2
+import numpy as np
+import torch
+from fontTools.ttLib import TTFont
+from PIL import Image, ImageDraw, ImageFont
+
+from dan.manager.dataset import DatasetManager, GenericDataset, apply_preprocessing
+from dan.ocr.utils import LM_str_to_ind
+from dan.utils import (
+    pad_image,
+    pad_image_width_right,
+    pad_images,
+    pad_sequences_1D,
+    rand,
+    rand_uniform,
+    randint,
+)
+
+
+class OCRDatasetManager(DatasetManager):
+    """
+    Specific class to handle OCR/HTR tasks
+    """
+
+    def __init__(self, params):
+        super(OCRDatasetManager, self).__init__(params)
+
+        self.charset = (
+            params["charset"] if "charset" in params else self.get_merged_charsets()
+        )
+
+        if (
+            "synthetic_data" in self.params["config"]
+            and self.params["config"]["synthetic_data"]
+            and "config" in self.params["config"]["synthetic_data"]
+        ):
+            self.char_only_set = self.charset.copy()
+            for token in [
+                "\n",
+            ]:
+                if token in self.char_only_set:
+                    self.char_only_set.remove(token)
+            self.params["config"]["synthetic_data"]["config"][
+                "valid_fonts"
+            ] = get_valid_fonts(self.char_only_set)
+
+        if "new_tokens" in params:
+            self.charset = sorted(
+                list(set(self.charset).union(set(params["new_tokens"])))
+            )
+
+        self.tokens = {
+            "pad": params["config"]["padding_token"],
+        }
+        if self.params["config"]["charset_mode"].lower() == "ctc":
+            self.tokens["blank"] = len(self.charset)
+            self.tokens["pad"] = (
+                self.tokens["pad"] if self.tokens["pad"] else len(self.charset) + 1
+            )
+            self.params["config"]["padding_token"] = self.tokens["pad"]
+        elif self.params["config"]["charset_mode"] == "seq2seq":
+            self.tokens["end"] = len(self.charset)
+            self.tokens["start"] = len(self.charset) + 1
+            self.tokens["pad"] = (
+                self.tokens["pad"] if self.tokens["pad"] else len(self.charset) + 2
+            )
+            self.params["config"]["padding_token"] = self.tokens["pad"]
+
+    def get_merged_charsets(self):
+        """
+        Merge the charset of the different datasets used
+        """
+        datasets = self.params["datasets"]
+        charset = set()
+        for key in datasets.keys():
+            with open(os.path.join(datasets[key], "labels.pkl"), "rb") as f:
+                info = pickle.load(f)
+                charset = charset.union(set(info["charset"]))
+        if (
+            "\n" in charset
+            and "remove_linebreaks" in self.params["config"]["constraints"]
+        ):
+            charset.remove("\n")
+        if "" in charset:
+            charset.remove("")
+        return sorted(list(charset))
+
+    def apply_specific_treatment_after_dataset_loading(self, dataset):
+        dataset.charset = self.charset
+        dataset.tokens = self.tokens
+        dataset.convert_labels()
+        if (
+            "padding" in dataset.params["config"]
+            and dataset.params["config"]["padding"]["min_height"] == "max"
+        ):
+            dataset.params["config"]["padding"]["min_height"] = max(
+                [s["img"].shape[0] for s in self.train_dataset.samples]
+            )
+        if (
+            "padding" in dataset.params["config"]
+            and dataset.params["config"]["padding"]["min_width"] == "max"
+        ):
+            dataset.params["config"]["padding"]["min_width"] = max(
+                [s["img"].shape[1] for s in self.train_dataset.samples]
+            )
+
+
+class OCRDataset(GenericDataset):
+    """
+    Specific class to handle OCR/HTR datasets
+    """
+
+    def __init__(self, params, set_name, custom_name, paths_and_sets):
+        super(OCRDataset, self).__init__(params, set_name, custom_name, paths_and_sets)
+        self.charset = None
+        self.tokens = None
+        self.reduce_dims_factor = np.array(
+            [params["config"]["height_divisor"], params["config"]["width_divisor"], 1]
+        )
+        self.collate_function = OCRCollateFunction
+        self.synthetic_id = 0
+
+    def __getitem__(self, idx):
+        sample = copy.deepcopy(self.samples[idx])
+
+        if not self.load_in_memory:
+            sample["img"] = self.get_sample_img(idx)
+            sample = apply_preprocessing(
+                sample, self.params["config"]["preprocessings"]
+            )
+
+        if (
+            "synthetic_data" in self.params["config"]
+            and self.params["config"]["synthetic_data"]
+            and self.set_name == "train"
+        ):
+            sample = self.generate_synthetic_data(sample)
+
+        # Data augmentation
+        sample["img"], sample["applied_da"] = self.apply_data_augmentation(
+            sample["img"]
+        )
+
+        if "max_size" in self.params["config"] and self.params["config"]["max_size"]:
+            max_ratio = max(
+                sample["img"].shape[0]
+                / self.params["config"]["max_size"]["max_height"],
+                sample["img"].shape[1] / self.params["config"]["max_size"]["max_width"],
+            )
+            if max_ratio > 1:
+                new_h, new_w = int(np.ceil(sample["img"].shape[0] / max_ratio)), int(
+                    np.ceil(sample["img"].shape[1] / max_ratio)
+                )
+                sample["img"] = cv2.resize(sample["img"], (new_w, new_h))
+
+        # Normalization if requested
+        if "normalize" in self.params["config"] and self.params["config"]["normalize"]:
+            sample["img"] = (sample["img"] - self.mean) / self.std
+
+        sample["img_shape"] = sample["img"].shape
+        sample["img_reduced_shape"] = np.ceil(
+            sample["img_shape"] / self.reduce_dims_factor
+        ).astype(int)
+
+        # Padding to handle CTC requirements
+        if self.set_name == "train":
+            max_label_len = 0
+            height = 1
+            ctc_padding = False
+            if "CTC_line" in self.params["config"]["constraints"]:
+                max_label_len = sample["label_len"]
+                ctc_padding = True
+            if "CTC_va" in self.params["config"]["constraints"]:
+                max_label_len = max(sample["line_label_len"])
+                ctc_padding = True
+            if "CTC_pg" in self.params["config"]["constraints"]:
+                max_label_len = sample["label_len"]
+                height = max(sample["img_reduced_shape"][0], 1)
+                ctc_padding = True
+            if (
+                ctc_padding
+                and 2 * max_label_len + 1 > sample["img_reduced_shape"][1] * height
+            ):
+                sample["img"] = pad_image_width_right(
+                    sample["img"],
+                    int(
+                        np.ceil((2 * max_label_len + 1) / height)
+                        * self.reduce_dims_factor[1]
+                    ),
+                    self.padding_value,
+                )
+                sample["img_shape"] = sample["img"].shape
+                sample["img_reduced_shape"] = np.ceil(
+                    sample["img_shape"] / self.reduce_dims_factor
+                ).astype(int)
+            sample["img_reduced_shape"] = [
+                max(1, t) for t in sample["img_reduced_shape"]
+            ]
+
+        sample["img_position"] = [
+            [0, sample["img_shape"][0]],
+            [0, sample["img_shape"][1]],
+        ]
+        # Padding constraints to handle model needs
+        if "padding" in self.params["config"] and self.params["config"]["padding"]:
+            if (
+                self.set_name == "train"
+                or not self.params["config"]["padding"]["train_only"]
+            ):
+                min_pad = self.params["config"]["padding"]["min_pad"]
+                max_pad = self.params["config"]["padding"]["max_pad"]
+                pad_width = (
+                    randint(min_pad, max_pad)
+                    if min_pad is not None and max_pad is not None
+                    else None
+                )
+                pad_height = (
+                    randint(min_pad, max_pad)
+                    if min_pad is not None and max_pad is not None
+                    else None
+                )
+
+                sample["img"], sample["img_position"] = pad_image(
+                    sample["img"],
+                    padding_value=self.padding_value,
+                    new_width=self.params["config"]["padding"]["min_width"],
+                    new_height=self.params["config"]["padding"]["min_height"],
+                    pad_width=pad_width,
+                    pad_height=pad_height,
+                    padding_mode=self.params["config"]["padding"]["mode"],
+                    return_position=True,
+                )
+        sample["img_reduced_position"] = [
+            np.ceil(p / factor).astype(int)
+            for p, factor in zip(sample["img_position"], self.reduce_dims_factor[:2])
+        ]
+        return sample
+
+    def convert_labels(self):
+        """
+        Label str to token at character level
+        """
+        for i in range(len(self.samples)):
+            self.samples[i] = self.convert_sample_labels(self.samples[i])
+
+    def convert_sample_labels(self, sample):
+        label = sample["label"]
+        line_labels = label.split("\n")
+        if "remove_linebreaks" in self.params["config"]["constraints"]:
+            full_label = label.replace("\n", " ").replace("  ", " ")
+            word_labels = full_label.split(" ")
+        else:
+            full_label = label
+            word_labels = label.replace("\n", " ").replace("  ", " ").split(" ")
+
+        sample["label"] = full_label
+        sample["token_label"] = LM_str_to_ind(self.charset, full_label)
+        if "add_eot" in self.params["config"]["constraints"]:
+            sample["token_label"].append(self.tokens["end"])
+        sample["label_len"] = len(sample["token_label"])
+        if "add_sot" in self.params["config"]["constraints"]:
+            sample["token_label"].insert(0, self.tokens["start"])
+
+        sample["line_label"] = line_labels
+        sample["token_line_label"] = [
+            LM_str_to_ind(self.charset, label) for label in line_labels
+        ]
+        sample["line_label_len"] = [len(label) for label in line_labels]
+        sample["nb_lines"] = len(line_labels)
+
+        sample["word_label"] = word_labels
+        sample["token_word_label"] = [
+            LM_str_to_ind(self.charset, label) for label in word_labels
+        ]
+        sample["word_label_len"] = [len(label) for label in word_labels]
+        sample["nb_words"] = len(word_labels)
+        return sample
+
+    def generate_synthetic_data(self, sample):
+        config = self.params["config"]["synthetic_data"]
+
+        if not (config["init_proba"] == config["end_proba"] == 1):
+            nb_samples = self.training_info["step"] * self.params["batch_size"]
+            if config["start_scheduler_at_max_line"]:
+                max_step = config["num_steps_proba"]
+                current_step = max(
+                    0,
+                    min(
+                        nb_samples
+                        - config["curr_step"]
+                        * (config["max_nb_lines"] - config["min_nb_lines"]),
+                        max_step,
+                    ),
+                )
+                proba = (
+                    config["init_proba"]
+                    if self.get_syn_max_lines() < config["max_nb_lines"]
+                    else config["proba_scheduler_function"](
+                        config["init_proba"],
+                        config["end_proba"],
+                        current_step,
+                        max_step,
+                    )
+                )
+            else:
+                proba = config["proba_scheduler_function"](
+                    config["init_proba"],
+                    config["end_proba"],
+                    min(nb_samples, config["num_steps_proba"]),
+                    config["num_steps_proba"],
+                )
+            if rand() > proba:
+                return sample
+
+        if "mode" in config and config["mode"] == "line_hw_to_printed":
+            sample["img"] = self.generate_typed_text_line_image(sample["label"])
+            return sample
+
+        return self.generate_synthetic_page_sample()
+
+    def get_syn_max_lines(self):
+        config = self.params["config"]["synthetic_data"]
+        if config["curriculum"]:
+            nb_samples = self.training_info["step"] * self.params["batch_size"]
+            max_nb_lines = min(
+                config["max_nb_lines"],
+                (nb_samples - config["curr_start"]) // config["curr_step"] + 1,
+            )
+            return max(config["min_nb_lines"], max_nb_lines)
+        return config["max_nb_lines"]
+
+    def generate_synthetic_page_sample(self):
+        config = self.params["config"]["synthetic_data"]
+        max_nb_lines_per_page = self.get_syn_max_lines()
+        crop = (
+            config["crop_curriculum"] and max_nb_lines_per_page < config["max_nb_lines"]
+        )
+        sample = {"name": "synthetic_data_{}".format(self.synthetic_id), "path": None}
+        self.synthetic_id += 1
+        nb_pages = 2 if "double" in config["dataset_level"] else 1
+        background_sample = copy.deepcopy(self.samples[randint(0, len(self))])
+        pages = list()
+        backgrounds = list()
+
+        h, w, c = background_sample["img"].shape
+        page_width = w // 2 if nb_pages == 2 else w
+        for i in range(nb_pages):
+            nb_lines_per_page = randint(
+                config["min_nb_lines"], max_nb_lines_per_page + 1
+            )
+            background = (
+                np.ones((h, page_width, c), dtype=background_sample["img"].dtype) * 255
+            )
+            if i == 0 and nb_pages == 2:
+                background[:, -2:, :] = 0
+            backgrounds.append(background)
+            if "READ_2016" in self.params["datasets"].keys():
+                side = background_sample["pages_label"][i]["side"]
+                coords = {
+                    "left": int(0.15 * page_width)
+                    if side == "left"
+                    else int(0.05 * page_width),
+                    "right": int(0.95 * page_width)
+                    if side == "left"
+                    else int(0.85 * page_width),
+                    "top": int(0.05 * h),
+                    "bottom": int(0.85 * h),
+                }
+                pages.append(
+                    self.generate_synthetic_read2016_page(
+                        background,
+                        coords,
+                        side=side,
+                        crop=crop,
+                        nb_lines=nb_lines_per_page,
+                    )
+                )
+            elif "RIMES" in self.params["datasets"].keys():
+                pages.append(
+                    self.generate_synthetic_rimes_page(
+                        background, nb_lines=nb_lines_per_page, crop=crop
+                    )
+                )
+            else:
+                raise NotImplementedError
+
+        if nb_pages == 1:
+            sample["img"] = pages[0][0]
+            sample["label_raw"] = pages[0][1]["raw"]
+            sample["label_begin"] = pages[0][1]["begin"]
+            sample["label_sem"] = pages[0][1]["sem"]
+            sample["label"] = pages[0][1]
+            sample["nb_cols"] = pages[0][2]
+        else:
+            if pages[0][0].shape[0] != pages[1][0].shape[0]:
+                max_height = max(pages[0][0].shape[0], pages[1][0].shape[0])
+                backgrounds[0] = backgrounds[0][:max_height]
+                backgrounds[0][: pages[0][0].shape[0]] = pages[0][0]
+                backgrounds[1] = backgrounds[1][:max_height]
+                backgrounds[1][: pages[1][0].shape[0]] = pages[1][0]
+                pages[0][0] = backgrounds[0]
+                pages[1][0] = backgrounds[1]
+            sample["label_raw"] = pages[0][1]["raw"] + "\n" + pages[1][1]["raw"]
+            sample["label_begin"] = pages[0][1]["begin"] + pages[1][1]["begin"]
+            sample["label_sem"] = pages[0][1]["sem"] + pages[1][1]["sem"]
+            sample["img"] = np.concatenate([pages[0][0], pages[1][0]], axis=1)
+            sample["nb_cols"] = pages[0][2] + pages[1][2]
+        sample["label"] = sample["label_raw"]
+        if "â“‘" in self.charset:
+            sample["label"] = sample["label_begin"]
+        if "â’·" in self.charset:
+            sample["label"] = sample["label_sem"]
+        sample["unchanged_label"] = sample["label"]
+        sample = self.convert_sample_labels(sample)
+        return sample
+
+    def generate_typed_text_line_image(self, text):
+        return generate_typed_text_line_image(
+            text, self.params["config"]["synthetic_data"]["config"]
+        )
+
+
+class OCRCollateFunction:
+    """
+    Merge samples data to mini-batch data for OCR task
+    """
+
+    def __init__(self, config):
+        self.img_padding_value = float(config["padding_value"])
+        self.label_padding_value = config["padding_token"]
+        self.config = config
+
+    def __call__(self, batch_data):
+        names = [batch_data[i]["name"] for i in range(len(batch_data))]
+        ids = [
+            batch_data[i]["name"].split("/")[-1].split(".")[0]
+            for i in range(len(batch_data))
+        ]
+        applied_da = [batch_data[i]["applied_da"] for i in range(len(batch_data))]
+
+        labels = [batch_data[i]["token_label"] for i in range(len(batch_data))]
+        labels = pad_sequences_1D(labels, padding_value=self.label_padding_value)
+        labels = torch.tensor(labels).long()
+        reverse_labels = [
+            [
+                batch_data[i]["token_label"][0],
+            ]
+            + batch_data[i]["token_label"][-2:0:-1]
+            + [
+                batch_data[i]["token_label"][-1],
+            ]
+            for i in range(len(batch_data))
+        ]
+        reverse_labels = pad_sequences_1D(
+            reverse_labels, padding_value=self.label_padding_value
+        )
+        reverse_labels = torch.tensor(reverse_labels).long()
+        labels_len = [batch_data[i]["label_len"] for i in range(len(batch_data))]
+
+        raw_labels = [batch_data[i]["label"] for i in range(len(batch_data))]
+        unchanged_labels = [
+            batch_data[i]["unchanged_label"] for i in range(len(batch_data))
+        ]
+
+        nb_cols = [batch_data[i]["nb_cols"] for i in range(len(batch_data))]
+        nb_lines = [batch_data[i]["nb_lines"] for i in range(len(batch_data))]
+        line_raw = [batch_data[i]["line_label"] for i in range(len(batch_data))]
+        line_token = [batch_data[i]["token_line_label"] for i in range(len(batch_data))]
+        pad_line_token = list()
+        line_len = [batch_data[i]["line_label_len"] for i in range(len(batch_data))]
+        for i in range(max(nb_lines)):
+            current_lines = [
+                line_token[j][i] if i < nb_lines[j] else [self.label_padding_value]
+                for j in range(len(batch_data))
+            ]
+            pad_line_token.append(
+                torch.tensor(
+                    pad_sequences_1D(
+                        current_lines, padding_value=self.label_padding_value
+                    )
+                ).long()
+            )
+            for j in range(len(batch_data)):
+                if i >= nb_lines[j]:
+                    line_len[j].append(0)
+        line_len = [i for i in zip(*line_len)]
+
+        nb_words = [batch_data[i]["nb_words"] for i in range(len(batch_data))]
+        word_raw = [batch_data[i]["word_label"] for i in range(len(batch_data))]
+        word_token = [batch_data[i]["token_word_label"] for i in range(len(batch_data))]
+        pad_word_token = list()
+        word_len = [batch_data[i]["word_label_len"] for i in range(len(batch_data))]
+        for i in range(max(nb_words)):
+            current_words = [
+                word_token[j][i] if i < nb_words[j] else [self.label_padding_value]
+                for j in range(len(batch_data))
+            ]
+            pad_word_token.append(
+                torch.tensor(
+                    pad_sequences_1D(
+                        current_words, padding_value=self.label_padding_value
+                    )
+                ).long()
+            )
+            for j in range(len(batch_data)):
+                if i >= nb_words[j]:
+                    word_len[j].append(0)
+        word_len = [i for i in zip(*word_len)]
+
+        padding_mode = (
+            self.config["padding_mode"] if "padding_mode" in self.config else "br"
+        )
+        imgs = [batch_data[i]["img"] for i in range(len(batch_data))]
+        imgs_shape = [batch_data[i]["img_shape"] for i in range(len(batch_data))]
+        imgs_reduced_shape = [
+            batch_data[i]["img_reduced_shape"] for i in range(len(batch_data))
+        ]
+        imgs_position = [batch_data[i]["img_position"] for i in range(len(batch_data))]
+        imgs_reduced_position = [
+            batch_data[i]["img_reduced_position"] for i in range(len(batch_data))
+        ]
+        imgs = pad_images(
+            imgs, padding_value=self.img_padding_value, padding_mode=padding_mode
+        )
+        imgs = torch.tensor(imgs).float().permute(0, 3, 1, 2)
+        formatted_batch_data = {
+            "names": names,
+            "ids": ids,
+            "nb_lines": nb_lines,
+            "nb_cols": nb_cols,
+            "labels": labels,
+            "reverse_labels": reverse_labels,
+            "raw_labels": raw_labels,
+            "unchanged_labels": unchanged_labels,
+            "labels_len": labels_len,
+            "imgs": imgs,
+            "imgs_shape": imgs_shape,
+            "imgs_reduced_shape": imgs_reduced_shape,
+            "imgs_position": imgs_position,
+            "imgs_reduced_position": imgs_reduced_position,
+            "line_raw": line_raw,
+            "line_labels": pad_line_token,
+            "line_labels_len": line_len,
+            "nb_words": nb_words,
+            "word_raw": word_raw,
+            "word_labels": pad_word_token,
+            "word_labels_len": word_len,
+            "applied_da": applied_da,
+        }
+
+        return formatted_batch_data
+
+
+def generate_typed_text_line_image(
+    text, config, bg_color=(255, 255, 255), txt_color=(0, 0, 0)
+):
+    if text == "":
+        text = " "
+    if "text_color_default" in config:
+        txt_color = config["text_color_default"]
+    if "background_color_default" in config:
+        bg_color = config["background_color_default"]
+
+    font_path = config["valid_fonts"][randint(0, len(config["valid_fonts"]))]
+    font_size = randint(config["font_size_min"], config["font_size_max"] + 1)
+    fnt = ImageFont.truetype(font_path, font_size)
+
+    text_width, text_height = fnt.getsize(text)
+    padding_top = int(
+        rand_uniform(config["padding_top_ratio_min"], config["padding_top_ratio_max"])
+        * text_height
+    )
+    padding_bottom = int(
+        rand_uniform(
+            config["padding_bottom_ratio_min"], config["padding_bottom_ratio_max"]
+        )
+        * text_height
+    )
+    padding_left = int(
+        rand_uniform(config["padding_left_ratio_min"], config["padding_left_ratio_max"])
+        * text_width
+    )
+    padding_right = int(
+        rand_uniform(
+            config["padding_right_ratio_min"], config["padding_right_ratio_max"]
+        )
+        * text_width
+    )
+    padding = [padding_top, padding_bottom, padding_left, padding_right]
+    return generate_typed_text_line_image_from_params(
+        text, fnt, bg_color, txt_color, config["color_mode"], padding
+    )
+
+
+def generate_typed_text_line_image_from_params(
+    text, font, bg_color, txt_color, color_mode, padding
+):
+    padding_top, padding_bottom, padding_left, padding_right = padding
+    text_width, text_height = font.getsize(text)
+    img_height = padding_top + padding_bottom + text_height
+    img_width = padding_left + padding_right + text_width
+    img = Image.new(color_mode, (img_width, img_height), color=bg_color)
+    d = ImageDraw.Draw(img)
+    d.text((padding_left, padding_bottom), text, font=font, fill=txt_color, spacing=0)
+    return np.array(img)
+
+
+def char_in_font(unicode_char, font_path):
+    with TTFont(font_path) as font:
+        for cmap in font["cmap"].tables:
+            if cmap.isUnicode():
+                if ord(unicode_char) in cmap.cmap:
+                    return True
+    return False
+
+
+def get_valid_fonts(alphabet=None):
+    valid_fonts = list()
+    for fold_detail in os.walk("../../../Fonts"):
+        if fold_detail[2]:
+            for font_name in fold_detail[2]:
+                if ".ttf" not in font_name:
+                    continue
+                font_path = os.path.join(fold_detail[0], font_name)
+                to_add = True
+                if alphabet is not None:
+                    for char in alphabet:
+                        if not char_in_font(char, font_path):
+                            to_add = False
+                            break
+                    if to_add:
+                        valid_fonts.append(font_path)
+                else:
+                    valid_fonts.append(font_path)
+    return valid_fonts
diff --git a/dan/manager/training.py b/dan/manager/training.py
new file mode 100644
index 00000000..90f13626
--- /dev/null
+++ b/dan/manager/training.py
@@ -0,0 +1,1291 @@
+# -*- coding: utf-8 -*-
+import copy
+import json
+import os
+import pickle
+import random
+import sys
+from datetime import date
+from time import time
+
+import numpy as np
+import torch
+import torch.distributed as dist
+import torch.multiprocessing as mp
+from PIL import Image
+from torch.cuda.amp import GradScaler, autocast
+from torch.nn import CrossEntropyLoss
+from torch.nn.init import kaiming_uniform_
+from torch.nn.parallel import DistributedDataParallel as DDP
+from torch.utils.tensorboard import SummaryWriter
+from tqdm import tqdm
+
+from dan.manager.metrics import MetricManager
+from dan.ocr.utils import LM_ind_to_str
+from dan.schedulers import DropoutScheduler
+
+
+class GenericTrainingManager:
+    def __init__(self, params):
+        self.type = None
+        self.is_master = False
+        self.params = params
+        self.dropout_scheduler = None
+        self.models = {}
+        self.begin_time = None
+        self.dataset = None
+        self.dataset_name = list(self.params["dataset_params"]["datasets"].values())[0]
+        self.paths = None
+        self.latest_step = 0
+        self.latest_epoch = -1
+        self.latest_batch = 0
+        self.total_batch = 0
+        self.grad_acc_step = 0
+        self.latest_train_metrics = dict()
+        self.latest_valid_metrics = dict()
+        self.curriculum_info = dict()
+        self.curriculum_info["latest_valid_metrics"] = dict()
+        self.phase = None
+        self.max_mem_usage_by_epoch = list()
+        self.losses = list()
+        self.lr_values = list()
+
+        self.scaler = None
+
+        self.optimizers = dict()
+        self.optimizers_named_params_by_group = dict()
+        self.lr_schedulers = dict()
+        self.best = None
+        self.writer = None
+        self.metric_manager = dict()
+
+        self.init_hardware_config()
+        self.init_paths()
+        self.load_dataset()
+        self.params["model_params"]["use_amp"] = self.params["training_params"][
+            "use_amp"
+        ]
+
+    def init_paths(self):
+        """
+        Create output folders for results and checkpoints
+        """
+        output_path = os.path.join(
+            "outputs", self.params["training_params"]["output_folder"]
+        )
+        os.makedirs(output_path, exist_ok=True)
+        checkpoints_path = os.path.join(output_path, "checkpoints")
+        os.makedirs(checkpoints_path, exist_ok=True)
+        results_path = os.path.join(output_path, "results")
+        os.makedirs(results_path, exist_ok=True)
+
+        self.paths = {
+            "results": results_path,
+            "checkpoints": checkpoints_path,
+            "output_folder": output_path,
+        }
+
+    def load_dataset(self):
+        """
+        Load datasets, data samplers and data loaders
+        """
+        self.params["dataset_params"]["use_ddp"] = self.params["training_params"][
+            "use_ddp"
+        ]
+        self.params["dataset_params"]["batch_size"] = self.params["training_params"][
+            "batch_size"
+        ]
+        if "valid_batch_size" in self.params["training_params"]:
+            self.params["dataset_params"]["valid_batch_size"] = self.params[
+                "training_params"
+            ]["valid_batch_size"]
+        if "test_batch_size" in self.params["training_params"]:
+            self.params["dataset_params"]["test_batch_size"] = self.params[
+                "training_params"
+            ]["test_batch_size"]
+        self.params["dataset_params"]["num_gpu"] = self.params["training_params"][
+            "nb_gpu"
+        ]
+        self.params["dataset_params"]["worker_per_gpu"] = (
+            4
+            if "worker_per_gpu" not in self.params["dataset_params"]
+            else self.params["dataset_params"]["worker_per_gpu"]
+        )
+        self.dataset = self.params["dataset_params"]["dataset_manager"](
+            self.params["dataset_params"]
+        )
+        self.dataset.load_datasets()
+        self.dataset.load_ddp_samplers()
+        self.dataset.load_dataloaders()
+
+    def init_hardware_config(self):
+        # Debug mode
+        if self.params["training_params"]["force_cpu"]:
+            self.params["training_params"]["use_ddp"] = False
+            self.params["training_params"]["use_amp"] = False
+        # Manage Distributed Data Parallel & GPU usage
+        self.manual_seed = (
+            1111
+            if "manual_seed" not in self.params["training_params"].keys()
+            else self.params["training_params"]["manual_seed"]
+        )
+        self.ddp_config = {
+            "master": self.params["training_params"]["use_ddp"]
+            and self.params["training_params"]["ddp_rank"] == 0,
+            "address": "localhost"
+            if "ddp_addr" not in self.params["training_params"].keys()
+            else self.params["training_params"]["ddp_addr"],
+            "port": "11111"
+            if "ddp_port" not in self.params["training_params"].keys()
+            else self.params["training_params"]["ddp_port"],
+            "backend": "nccl"
+            if "ddp_backend" not in self.params["training_params"].keys()
+            else self.params["training_params"]["ddp_backend"],
+            "rank": self.params["training_params"]["ddp_rank"],
+        }
+        self.is_master = (
+            self.ddp_config["master"] or not self.params["training_params"]["use_ddp"]
+        )
+        if self.params["training_params"]["force_cpu"]:
+            self.device = "cpu"
+        else:
+            if self.params["training_params"]["use_ddp"]:
+                self.device = torch.device(self.ddp_config["rank"])
+                self.params["dataset_params"]["ddp_rank"] = self.ddp_config["rank"]
+                self.launch_ddp()
+            else:
+                self.device = torch.device(
+                    "cuda:0" if torch.cuda.is_available() else "cpu"
+                )
+        self.params["model_params"]["device"] = self.device.type
+        # Print GPU info
+        # global
+        if (
+            self.params["training_params"]["use_ddp"] and self.ddp_config["master"]
+        ) or not self.params["training_params"]["use_ddp"]:
+            print("##################")
+            print("Available GPUS: {}".format(self.params["training_params"]["nb_gpu"]))
+            for i in range(self.params["training_params"]["nb_gpu"]):
+                print(
+                    "Rank {}: {} {}".format(
+                        i,
+                        torch.cuda.get_device_name(i),
+                        torch.cuda.get_device_properties(i),
+                    )
+                )
+            print("##################")
+        # local
+        print("Local GPU:")
+        if self.device != "cpu":
+            print(
+                "Rank {}: {} {}".format(
+                    self.params["training_params"]["ddp_rank"],
+                    torch.cuda.get_device_name(),
+                    torch.cuda.get_device_properties(self.device),
+                )
+            )
+        else:
+            print("WORKING ON CPU !\n")
+        print("##################")
+
+    def load_model(self, reset_optimizer=False, strict=True):
+        """
+        Load model weights from scratch or from checkpoints
+        """
+        # Instantiate Model
+        for model_name in self.params["model_params"]["models"].keys():
+            self.models[model_name] = self.params["model_params"]["models"][model_name](
+                self.params["model_params"]
+            )
+            self.models[model_name].to(self.device)  # To GPU or CPU
+            # make the model compatible with Distributed Data Parallel if used
+            if self.params["training_params"]["use_ddp"]:
+                self.models[model_name] = DDP(
+                    self.models[model_name], [self.ddp_config["rank"]]
+                )
+
+        # Handle curriculum dropout
+        if "dropout_scheduler" in self.params["model_params"]:
+            func = self.params["model_params"]["dropout_scheduler"]["function"]
+            T = self.params["model_params"]["dropout_scheduler"]["T"]
+            self.dropout_scheduler = DropoutScheduler(self.models, func, T)
+
+        self.scaler = GradScaler(enabled=self.params["training_params"]["use_amp"])
+
+        # Check if checkpoint exists
+        checkpoint = self.get_checkpoint()
+        if checkpoint is not None:
+            self.load_existing_model(checkpoint, strict=strict)
+        else:
+            self.init_new_model()
+
+        self.load_optimizers(checkpoint, reset_optimizer=reset_optimizer)
+
+        if self.is_master:
+            print("LOADED EPOCH: {}\n".format(self.latest_epoch), flush=True)
+
+    def get_checkpoint(self):
+        """
+        Seek if checkpoint exist, return None otherwise
+        """
+        if self.params["training_params"]["load_epoch"] in ("best", "last"):
+            for filename in os.listdir(self.paths["checkpoints"]):
+                if self.params["training_params"]["load_epoch"] in filename:
+                    return torch.load(os.path.join(self.paths["checkpoints"], filename))
+        return None
+
+    def load_existing_model(self, checkpoint, strict=True):
+        """
+        Load information and weights from previous training
+        """
+        self.load_save_info(checkpoint)
+        self.latest_epoch = checkpoint["epoch"]
+        if "step" in checkpoint:
+            self.latest_step = checkpoint["step"]
+        self.best = checkpoint["best"]
+        if "scaler_state_dict" in checkpoint:
+            self.scaler.load_state_dict(checkpoint["scaler_state_dict"])
+        # Load model weights from past training
+        for model_name in self.models.keys():
+            self.models[model_name].load_state_dict(
+                checkpoint["{}_state_dict".format(model_name)], strict=strict
+            )
+
+    def init_new_model(self):
+        """
+        Initialize model
+        """
+        # Specific weights initialization if exists
+        for model_name in self.models.keys():
+            try:
+                self.models[model_name].init_weights()
+            except Exception:
+                pass
+
+        # Handle transfer learning instructions
+        if self.params["model_params"]["transfer_learning"]:
+            # Iterates over models
+            for model_name in self.params["model_params"]["transfer_learning"].keys():
+                state_dict_name, path, learnable, strict = self.params["model_params"][
+                    "transfer_learning"
+                ][model_name]
+                # Loading pretrained weights file
+                checkpoint = torch.load(path)
+                try:
+                    # Load pretrained weights for model
+                    self.models[model_name].load_state_dict(
+                        checkpoint["{}_state_dict".format(state_dict_name)],
+                        strict=strict,
+                    )
+                    print(
+                        "transferred weights for {}".format(state_dict_name), flush=True
+                    )
+                except RuntimeError as e:
+                    print(e, flush=True)
+                    # if error, try to load each parts of the model (useful if only few layers are different)
+                    for key in checkpoint[
+                        "{}_state_dict".format(state_dict_name)
+                    ].keys():
+                        try:
+                            # for pre-training of decision layer
+                            if (
+                                "end_conv" in key
+                                and "transfered_charset" in self.params["model_params"]
+                            ):
+                                self.adapt_decision_layer_to_old_charset(
+                                    model_name, key, checkpoint, state_dict_name
+                                )
+                            else:
+                                self.models[model_name].load_state_dict(
+                                    {
+                                        key: checkpoint[
+                                            "{}_state_dict".format(state_dict_name)
+                                        ][key]
+                                    },
+                                    strict=False,
+                                )
+                        except RuntimeError as e:
+                            # exception when adding linebreak token from pretraining
+                            print(e, flush=True)
+                # Set parameters no trainable
+                if not learnable:
+                    self.set_model_learnable(self.models[model_name], False)
+
+    def adapt_decision_layer_to_old_charset(
+        self, model_name, key, checkpoint, state_dict_name
+    ):
+        """
+        Transfer learning of the decision learning in case of close charsets between pre-training and training
+        """
+        pretrained_chars = list()
+        weights = checkpoint["{}_state_dict".format(state_dict_name)][key]
+        new_size = list(weights.size())
+        new_size[0] = (
+            len(self.dataset.charset) + self.params["model_params"]["additional_tokens"]
+        )
+        new_weights = torch.zeros(new_size, device=weights.device, dtype=weights.dtype)
+        old_charset = (
+            checkpoint["charset"]
+            if "charset" in checkpoint
+            else self.params["model_params"]["old_charset"]
+        )
+        if "bias" not in key:
+            kaiming_uniform_(new_weights, nonlinearity="relu")
+        for i, c in enumerate(self.dataset.charset):
+            if c in old_charset:
+                new_weights[i] = weights[old_charset.index(c)]
+                pretrained_chars.append(c)
+        if (
+            "transfered_charset_last_is_ctc_blank" in self.params["model_params"]
+            and self.params["model_params"]["transfered_charset_last_is_ctc_blank"]
+        ):
+            new_weights[-1] = weights[-1]
+            pretrained_chars.append("<blank>")
+        checkpoint["{}_state_dict".format(state_dict_name)][key] = new_weights
+        self.models[model_name].load_state_dict(
+            {key: checkpoint["{}_state_dict".format(state_dict_name)][key]},
+            strict=False,
+        )
+        print(
+            "Pretrained chars for {} ({}): {}".format(
+                key, len(pretrained_chars), pretrained_chars
+            )
+        )
+
+    def load_optimizers(self, checkpoint, reset_optimizer=False):
+        """
+        Load the optimizer of each model
+        """
+        for model_name in self.models.keys():
+            new_params = dict()
+            if (
+                checkpoint
+                and "optimizer_named_params_{}".format(model_name) in checkpoint
+            ):
+                self.optimizers_named_params_by_group[model_name] = checkpoint[
+                    "optimizer_named_params_{}".format(model_name)
+                ]
+                # for progressively growing models
+                for name, param in self.models[model_name].named_parameters():
+                    existing = False
+                    for gr in self.optimizers_named_params_by_group[model_name]:
+                        if name in gr:
+                            gr[name] = param
+                            existing = True
+                            break
+                    if not existing:
+                        new_params.update({name: param})
+            else:
+                self.optimizers_named_params_by_group[model_name] = [
+                    dict(),
+                ]
+                self.optimizers_named_params_by_group[model_name][0].update(
+                    self.models[model_name].named_parameters()
+                )
+
+            # Instantiate optimizer
+            self.reset_optimizer(model_name)
+
+            # Handle learning rate schedulers
+            if (
+                "lr_schedulers" in self.params["training_params"]
+                and self.params["training_params"]["lr_schedulers"]
+            ):
+                key = (
+                    "all"
+                    if "all" in self.params["training_params"]["lr_schedulers"]
+                    else model_name
+                )
+                if key in self.params["training_params"]["lr_schedulers"]:
+                    self.lr_schedulers[model_name] = self.params["training_params"][
+                        "lr_schedulers"
+                    ][key]["class"](
+                        self.optimizers[model_name],
+                        **self.params["training_params"]["lr_schedulers"][key]["args"]
+                    )
+
+            # Load optimizer state from past training
+            if checkpoint and not reset_optimizer:
+                self.optimizers[model_name].load_state_dict(
+                    checkpoint["optimizer_{}_state_dict".format(model_name)]
+                )
+                # Load optimizer scheduler config from past training if used
+                if (
+                    "lr_schedulers" in self.params["training_params"]
+                    and self.params["training_params"]["lr_schedulers"]
+                    and "lr_scheduler_{}_state_dict".format(model_name)
+                    in checkpoint.keys()
+                ):
+                    self.lr_schedulers[model_name].load_state_dict(
+                        checkpoint["lr_scheduler_{}_state_dict".format(model_name)]
+                    )
+
+            # for progressively growing models, keeping learning rate
+            if checkpoint and new_params:
+                self.optimizers_named_params_by_group[model_name].append(new_params)
+                self.optimizers[model_name].add_param_group(
+                    {"params": list(new_params.values())}
+                )
+
+    @staticmethod
+    def set_model_learnable(model, learnable=True):
+        for p in list(model.parameters()):
+            p.requires_grad = learnable
+
+    def save_model(self, epoch, name, keep_weights=False):
+        """
+        Save model weights and training info for curriculum learning or learning rate for instance
+        """
+        if not self.is_master:
+            return
+        to_del = []
+        for filename in os.listdir(self.paths["checkpoints"]):
+            if name in filename:
+                to_del.append(os.path.join(self.paths["checkpoints"], filename))
+        path = os.path.join(self.paths["checkpoints"], "{}_{}.pt".format(name, epoch))
+        content = {
+            "optimizers_named_params": self.optimizers_named_params_by_group,
+            "epoch": epoch,
+            "step": self.latest_step,
+            "scaler_state_dict": self.scaler.state_dict(),
+            "best": self.best,
+            "charset": self.dataset.charset,
+        }
+        for model_name in self.optimizers:
+            content["optimizer_{}_state_dict".format(model_name)] = self.optimizers[
+                model_name
+            ].state_dict()
+        for model_name in self.lr_schedulers:
+            content[
+                "lr_scheduler_{}_state_dict".format(model_name)
+            ] = self.lr_schedulers[model_name].state_dict()
+        content = self.add_save_info(content)
+        for model_name in self.models.keys():
+            content["{}_state_dict".format(model_name)] = self.models[
+                model_name
+            ].state_dict()
+        torch.save(content, path)
+        if not keep_weights:
+            for path_to_del in to_del:
+                if path_to_del != path:
+                    os.remove(path_to_del)
+
+    def reset_optimizer(self, model_name):
+        """
+        Reset optimizer learning rate for given model
+        """
+        params = list(self.optimizers_named_params_by_group[model_name][0].values())
+        key = (
+            "all"
+            if "all" in self.params["training_params"]["optimizers"]
+            else model_name
+        )
+        self.optimizers[model_name] = self.params["training_params"]["optimizers"][key][
+            "class"
+        ](params, **self.params["training_params"]["optimizers"][key]["args"])
+        for i in range(1, len(self.optimizers_named_params_by_group[model_name])):
+            self.optimizers[model_name].add_param_group(
+                {
+                    "params": list(
+                        self.optimizers_named_params_by_group[model_name][i].values()
+                    )
+                }
+            )
+
+    def save_params(self):
+        """
+        Output text file containing a summary of all hyperparameters chosen for the training
+        """
+
+        def compute_nb_params(module):
+            return sum([np.prod(p.size()) for p in list(module.parameters())])
+
+        def class_to_str_dict(my_dict):
+            for key in my_dict.keys():
+                if callable(my_dict[key]):
+                    my_dict[key] = my_dict[key].__name__
+                elif isinstance(my_dict[key], np.ndarray):
+                    my_dict[key] = my_dict[key].tolist()
+                elif isinstance(my_dict[key], dict):
+                    my_dict[key] = class_to_str_dict(my_dict[key])
+            return my_dict
+
+        path = os.path.join(self.paths["results"], "params")
+        if os.path.isfile(path):
+            return
+        params = copy.deepcopy(self.params)
+        params = class_to_str_dict(params)
+        params["date"] = date.today().strftime("%d/%m/%Y")
+        total_params = 0
+        for model_name in self.models.keys():
+            current_params = compute_nb_params(self.models[model_name])
+            params["model_params"]["models"][model_name] = [
+                params["model_params"]["models"][model_name],
+                "{:,}".format(current_params),
+            ]
+            total_params += current_params
+        params["model_params"]["total_params"] = "{:,}".format(total_params)
+
+        params["hardware"] = dict()
+        if self.device != "cpu":
+            for i in range(self.params["training_params"]["nb_gpu"]):
+                params["hardware"][str(i)] = "{} {}".format(
+                    torch.cuda.get_device_name(i), torch.cuda.get_device_properties(i)
+                )
+        else:
+            params["hardware"]["0"] = "CPU"
+        params["software"] = {
+            "python_version": sys.version,
+            "pytorch_version": torch.__version__,
+            "cuda_version": torch.version.cuda,
+            "cudnn_version": torch.backends.cudnn.version(),
+        }
+        with open(path, "w") as f:
+            json.dump(params, f, indent=4)
+
+    def backward_loss(self, loss, retain_graph=False):
+        self.scaler.scale(loss).backward(retain_graph=retain_graph)
+
+    def step_optimizers(self, increment_step=True, names=None):
+        for model_name in self.optimizers:
+            if names and model_name not in names:
+                continue
+            if (
+                "gradient_clipping" in self.params["training_params"]
+                and model_name
+                in self.params["training_params"]["gradient_clipping"]["models"]
+            ):
+                self.scaler.unscale_(self.optimizers[model_name])
+                torch.nn.utils.clip_grad_norm_(
+                    self.models[model_name].parameters(),
+                    self.params["training_params"]["gradient_clipping"]["max"],
+                )
+            self.scaler.step(self.optimizers[model_name])
+        self.scaler.update()
+        self.latest_step += 1
+
+    def zero_optimizers(self, set_to_none=True):
+        for model_name in self.optimizers:
+            self.zero_optimizer(model_name, set_to_none)
+
+    def zero_optimizer(self, model_name, set_to_none=True):
+        self.optimizers[model_name].zero_grad(set_to_none=set_to_none)
+
+    def train(self):
+        """
+        Main training loop
+        """
+        # init tensorboard file and output param summary file
+        if self.is_master:
+            self.writer = SummaryWriter(self.paths["results"])
+            self.save_params()
+        # init variables
+        self.begin_time = time()
+        focus_metric_name = self.params["training_params"]["focus_metric"]
+        nb_epochs = self.params["training_params"]["max_nb_epochs"]
+        interval_save_weights = self.params["training_params"]["interval_save_weights"]
+        metric_names = self.params["training_params"]["train_metrics"]
+
+        display_values = None
+        # init curriculum learning
+        if (
+            "curriculum_learning" in self.params["training_params"].keys()
+            and self.params["training_params"]["curriculum_learning"]
+        ):
+            self.init_curriculum()
+        # perform epochs
+        for num_epoch in range(self.latest_epoch + 1, nb_epochs):
+            self.dataset.train_dataset.training_info = {
+                "epoch": self.latest_epoch,
+                "step": self.latest_step,
+            }
+            self.phase = "train"
+            # Check maximum training time stop condition
+            if (
+                self.params["training_params"]["max_training_time"]
+                and time() - self.begin_time
+                > self.params["training_params"]["max_training_time"]
+            ):
+                break
+            # set models trainable
+            for model_name in self.models.keys():
+                self.models[model_name].train()
+            self.latest_epoch = num_epoch
+            if self.dataset.train_dataset.curriculum_config:
+                self.dataset.train_dataset.curriculum_config[
+                    "epoch"
+                ] = self.latest_epoch
+            # init epoch metrics values
+            self.metric_manager["train"] = MetricManager(
+                metric_names=metric_names, dataset_name=self.dataset_name
+            )
+
+            with tqdm(total=len(self.dataset.train_loader.dataset)) as pbar:
+                pbar.set_description("EPOCH {}/{}".format(num_epoch, nb_epochs))
+                # iterates over mini-batch data
+                for ind_batch, batch_data in enumerate(self.dataset.train_loader):
+                    self.latest_batch = ind_batch + 1
+                    self.total_batch += 1
+                    # train on batch data and compute metrics
+                    batch_values = self.train_batch(batch_data, metric_names)
+                    batch_metrics = self.metric_manager["train"].compute_metrics(
+                        batch_values, metric_names
+                    )
+                    batch_metrics["names"] = batch_data["names"]
+                    batch_metrics["ids"] = batch_data["ids"]
+                    # Merge metrics if Distributed Data Parallel is used
+                    if self.params["training_params"]["use_ddp"]:
+                        batch_metrics = self.merge_ddp_metrics(batch_metrics)
+                    # Update learning rate via scheduler if one is used
+                    if self.params["training_params"]["lr_schedulers"]:
+                        for model_name in self.models:
+                            key = (
+                                "all"
+                                if "all"
+                                in self.params["training_params"]["lr_schedulers"]
+                                else model_name
+                            )
+                            if (
+                                model_name in self.lr_schedulers
+                                and ind_batch
+                                % self.params["training_params"]["lr_schedulers"][key][
+                                    "step_interval"
+                                ]
+                                == 0
+                            ):
+                                self.lr_schedulers[model_name].step(
+                                    len(batch_metrics["names"])
+                                )
+                                if "lr" in metric_names:
+                                    self.writer.add_scalar(
+                                        "lr_{}".format(model_name),
+                                        self.lr_schedulers[model_name].lr,
+                                        self.lr_schedulers[model_name].step_num,
+                                    )
+                    # Update dropout scheduler if used
+                    if self.dropout_scheduler:
+                        self.dropout_scheduler.step(len(batch_metrics["names"]))
+                        self.dropout_scheduler.update_dropout_rate()
+
+                    # Add batch metrics values to epoch metrics values
+                    self.metric_manager["train"].update_metrics(batch_metrics)
+                    display_values = self.metric_manager["train"].get_display_values()
+                    pbar.set_postfix(values=str(display_values))
+                    pbar.update(len(batch_data["names"]))
+
+            # log metrics in tensorboard file
+            if self.is_master:
+                for key in display_values.keys():
+                    self.writer.add_scalar(
+                        "{}_{}".format(
+                            self.params["dataset_params"]["train"]["name"], key
+                        ),
+                        display_values[key],
+                        num_epoch,
+                    )
+            self.latest_train_metrics = display_values
+
+            # evaluate and compute metrics for valid sets
+            if (
+                self.params["training_params"]["eval_on_valid"]
+                and num_epoch % self.params["training_params"]["eval_on_valid_interval"]
+                == 0
+            ):
+                for valid_set_name in self.dataset.valid_loaders.keys():
+                    # evaluate set and compute metrics
+                    eval_values = self.evaluate(valid_set_name)
+                    self.latest_valid_metrics = eval_values
+                    # log valid metrics in tensorboard file
+                    if self.is_master:
+                        for key in eval_values.keys():
+                            self.writer.add_scalar(
+                                "{}_{}".format(valid_set_name, key),
+                                eval_values[key],
+                                num_epoch,
+                            )
+                        if valid_set_name == self.params["training_params"][
+                            "set_name_focus_metric"
+                        ] and (
+                            self.best is None
+                            or (
+                                eval_values[focus_metric_name] <= self.best
+                                and self.params["training_params"][
+                                    "expected_metric_value"
+                                ]
+                                == "low"
+                            )
+                            or (
+                                eval_values[focus_metric_name] >= self.best
+                                and self.params["training_params"][
+                                    "expected_metric_value"
+                                ]
+                                == "high"
+                            )
+                        ):
+                            self.save_model(epoch=num_epoch, name="best")
+                            self.best = eval_values[focus_metric_name]
+
+            # Handle curriculum learning update
+            if self.dataset.train_dataset.curriculum_config:
+                self.check_and_update_curriculum()
+
+            if (
+                "curriculum_model" in self.params["model_params"]
+                and self.params["model_params"]["curriculum_model"]
+            ):
+                self.update_curriculum_model()
+
+            # save model weights
+            if self.is_master:
+                self.save_model(epoch=num_epoch, name="last")
+                if interval_save_weights and num_epoch % interval_save_weights == 0:
+                    self.save_model(epoch=num_epoch, name="weights", keep_weights=True)
+                self.writer.flush()
+
+    def evaluate(self, set_name, **kwargs):
+        """
+        Main loop for validation
+        """
+        self.phase = "eval"
+        loader = self.dataset.valid_loaders[set_name]
+        # Set models in eval mode
+        for model_name in self.models.keys():
+            self.models[model_name].eval()
+        metric_names = self.params["training_params"]["eval_metrics"]
+        display_values = None
+
+        # initialize epoch metrics
+        self.metric_manager[set_name] = MetricManager(
+            metric_names, dataset_name=self.dataset_name
+        )
+        with tqdm(total=len(loader.dataset)) as pbar:
+            pbar.set_description("Evaluation E{}".format(self.latest_epoch))
+            with torch.no_grad():
+                # iterate over batch data
+                for ind_batch, batch_data in enumerate(loader):
+                    self.latest_batch = ind_batch + 1
+                    # eval batch data and compute metrics
+                    batch_values = self.evaluate_batch(batch_data, metric_names)
+                    batch_metrics = self.metric_manager[set_name].compute_metrics(
+                        batch_values, metric_names
+                    )
+                    batch_metrics["names"] = batch_data["names"]
+                    batch_metrics["ids"] = batch_data["ids"]
+                    # merge metrics values if Distributed Data Parallel is used
+                    if self.params["training_params"]["use_ddp"]:
+                        batch_metrics = self.merge_ddp_metrics(batch_metrics)
+
+                    # add batch metrics to epoch metrics
+                    self.metric_manager[set_name].update_metrics(batch_metrics)
+                    display_values = self.metric_manager[set_name].get_display_values()
+
+                    pbar.set_postfix(values=str(display_values))
+                    pbar.update(len(batch_data["names"]))
+        if "cer_by_nb_cols" in metric_names:
+            self.log_cer_by_nb_cols(set_name)
+        return display_values
+
+    def predict(self, custom_name, sets_list, metric_names, output=False):
+        """
+        Main loop for evaluation
+        """
+        self.phase = "predict"
+        metric_names = metric_names.copy()
+        self.dataset.generate_test_loader(custom_name, sets_list)
+        loader = self.dataset.test_loaders[custom_name]
+        # Set models in eval mode
+        for model_name in self.models.keys():
+            self.models[model_name].eval()
+
+        # initialize epoch metrics
+        self.metric_manager[custom_name] = MetricManager(
+            metric_names, self.dataset_name
+        )
+
+        with tqdm(total=len(loader.dataset)) as pbar:
+            pbar.set_description("Prediction")
+            with torch.no_grad():
+                for ind_batch, batch_data in enumerate(loader):
+                    # iterates over batch data
+                    self.latest_batch = ind_batch + 1
+                    # eval batch data and compute metrics
+                    batch_values = self.evaluate_batch(batch_data, metric_names)
+                    batch_metrics = self.metric_manager[custom_name].compute_metrics(
+                        batch_values, metric_names
+                    )
+                    batch_metrics["names"] = batch_data["names"]
+                    batch_metrics["ids"] = batch_data["ids"]
+                    # merge batch metrics if Distributed Data Parallel is used
+                    if self.params["training_params"]["use_ddp"]:
+                        batch_metrics = self.merge_ddp_metrics(batch_metrics)
+
+                    # add batch metrics to epoch metrics
+                    self.metric_manager[custom_name].update_metrics(batch_metrics)
+                    display_values = self.metric_manager[
+                        custom_name
+                    ].get_display_values()
+
+                    pbar.set_postfix(values=str(display_values))
+                    pbar.update(len(batch_data["names"]))
+
+        self.dataset.remove_test_dataset(custom_name)
+        # output metrics values if requested
+        if output:
+            if "pred" in metric_names:
+                self.output_pred(custom_name)
+            metrics = self.metric_manager[custom_name].get_display_values(output=True)
+            path = os.path.join(
+                self.paths["results"],
+                "predict_{}_{}.txt".format(custom_name, self.latest_epoch),
+            )
+            with open(path, "w") as f:
+                for metric_name in metrics.keys():
+                    f.write("{}: {}\n".format(metric_name, metrics[metric_name]))
+
+    def output_pred(self, name):
+        path = os.path.join(
+            self.paths["results"], "pred_{}_{}.txt".format(name, self.latest_epoch)
+        )
+        pred = "\n".join(self.metric_manager[name].get("pred"))
+        with open(path, "w") as f:
+            f.write(pred)
+
+    def launch_ddp(self):
+        """
+        Initialize Distributed Data Parallel system
+        """
+        mp.set_start_method("fork", force=True)
+        os.environ["MASTER_ADDR"] = self.ddp_config["address"]
+        os.environ["MASTER_PORT"] = str(self.ddp_config["port"])
+        dist.init_process_group(
+            self.ddp_config["backend"],
+            rank=self.ddp_config["rank"],
+            world_size=self.params["training_params"]["nb_gpu"],
+        )
+        torch.cuda.set_device(self.ddp_config["rank"])
+        random.seed(self.manual_seed)
+        np.random.seed(self.manual_seed)
+        torch.manual_seed(self.manual_seed)
+        torch.cuda.manual_seed(self.manual_seed)
+
+    def merge_ddp_metrics(self, metrics):
+        """
+        Merge metrics when Distributed Data Parallel is used
+        """
+        for metric_name in metrics.keys():
+            if metric_name in [
+                "edit_words",
+                "nb_words",
+                "edit_chars",
+                "nb_chars",
+                "edit_chars_force_len",
+                "edit_chars_curr",
+                "nb_chars_curr",
+                "ids",
+            ]:
+                metrics[metric_name] = self.cat_ddp_metric(metrics[metric_name])
+            elif metric_name in [
+                "nb_samples",
+                "loss",
+                "loss_ce",
+                "loss_ctc",
+                "loss_ce_end",
+            ]:
+                metrics[metric_name] = self.sum_ddp_metric(
+                    metrics[metric_name], average=False
+                )
+        return metrics
+
+    def sum_ddp_metric(self, metric, average=False):
+        """
+        Sum metrics for Distributed Data Parallel
+        """
+        sum = torch.tensor(metric[0]).to(self.device)
+        dist.all_reduce(sum, op=dist.ReduceOp.SUM)
+        if average:
+            sum.true_divide(dist.get_world_size())
+        return [
+            sum.item(),
+        ]
+
+    def cat_ddp_metric(self, metric):
+        """
+        Concatenate metrics for Distributed Data Parallel
+        """
+        tensor = torch.tensor(metric).unsqueeze(0).to(self.device)
+        res = [
+            torch.zeros(tensor.size()).long().to(self.device)
+            for _ in range(dist.get_world_size())
+        ]
+        dist.all_gather(res, tensor)
+        return list(torch.cat(res, dim=0).flatten().cpu().numpy())
+
+    @staticmethod
+    def cleanup():
+        dist.destroy_process_group()
+
+    def train_batch(self, batch_data, metric_names):
+        raise NotImplementedError
+
+    def evaluate_batch(self, batch_data, metric_names):
+        raise NotImplementedError
+
+    def init_curriculum(self):
+        raise NotImplementedError
+
+    def update_curriculum(self):
+        raise NotImplementedError
+
+    def add_checkpoint_info(self, load_mode="last", **kwargs):
+        for filename in os.listdir(self.paths["checkpoints"]):
+            if load_mode in filename:
+                checkpoint_path = os.path.join(self.paths["checkpoints"], filename)
+                checkpoint = torch.load(checkpoint_path)
+                for key in kwargs.keys():
+                    checkpoint[key] = kwargs[key]
+                torch.save(checkpoint, checkpoint_path)
+            return
+        self.save_model(self.latest_epoch, "last")
+
+    def load_save_info(self, info_dict):
+        """
+        Load curriculum info from saved model info
+        """
+        if "curriculum_config" in info_dict.keys():
+            self.dataset.train_dataset.curriculum_config = info_dict[
+                "curriculum_config"
+            ]
+
+    def add_save_info(self, info_dict):
+        """
+        Add curriculum info to model info to be saved
+        """
+        info_dict["curriculum_config"] = self.dataset.train_dataset.curriculum_config
+        return info_dict
+
+
+class OCRManager(GenericTrainingManager):
+    def __init__(self, params):
+        super(OCRManager, self).__init__(params)
+        self.params["model_params"]["vocab_size"] = len(self.dataset.charset)
+
+    def generate_syn_line_dataset(self, name):
+        """
+        Generate synthetic line dataset from currently loaded dataset
+        """
+        dataset_name = list(self.params["dataset_params"]["datasets"].keys())[0]
+        path = os.path.join(
+            os.path.dirname(self.params["dataset_params"]["datasets"][dataset_name]),
+            name,
+        )
+        os.makedirs(path, exist_ok=True)
+        charset = set()
+        dataset = None
+        gt = {"train": dict(), "valid": dict(), "test": dict()}
+        for set_name in ["train", "valid", "test"]:
+            set_path = os.path.join(path, set_name)
+            os.makedirs(set_path, exist_ok=True)
+            if set_name == "train":
+                dataset = self.dataset.train_dataset
+            elif set_name == "valid":
+                dataset = self.dataset.valid_datasets["{}-valid".format(dataset_name)]
+            elif set_name == "test":
+                self.dataset.generate_test_loader(
+                    "{}-test".format(dataset_name),
+                    [
+                        (dataset_name, "test"),
+                    ],
+                )
+                dataset = self.dataset.test_datasets["{}-test".format(dataset_name)]
+
+            samples = list()
+            for sample in dataset.samples:
+                for line_label in sample["label"].split("\n"):
+                    for chunk in [
+                        line_label[i : i + 100] for i in range(0, len(line_label), 100)
+                    ]:
+                        charset = charset.union(set(chunk))
+                        if len(chunk) > 0:
+                            samples.append(
+                                {
+                                    "path": sample["path"],
+                                    "label": chunk,
+                                    "nb_cols": 1,
+                                }
+                            )
+
+            for i, sample in enumerate(samples):
+                ext = sample["path"].split(".")[-1]
+                img_name = "{}_{}.{}".format(set_name, i, ext)
+                img_path = os.path.join(set_path, img_name)
+
+                img = dataset.generate_typed_text_line_image(sample["label"])
+                Image.fromarray(img).save(img_path)
+                gt[set_name][img_name] = {
+                    "text": sample["label"],
+                    "nb_cols": sample["nb_cols"] if "nb_cols" in sample else 1,
+                }
+                if "line_label" in sample:
+                    gt[set_name][img_name]["lines"] = sample["line_label"]
+
+        with open(os.path.join(path, "labels.pkl"), "wb") as f:
+            pickle.dump(
+                {
+                    "ground_truth": gt,
+                    "charset": sorted(list(charset)),
+                },
+                f,
+            )
+
+
+class Manager(OCRManager):
+    def __init__(self, params):
+        super(Manager, self).__init__(params)
+
+    def load_save_info(self, info_dict):
+        if "curriculum_config" in info_dict.keys():
+            if self.dataset.train_dataset is not None:
+                self.dataset.train_dataset.curriculum_config = info_dict[
+                    "curriculum_config"
+                ]
+
+    def add_save_info(self, info_dict):
+        info_dict["curriculum_config"] = self.dataset.train_dataset.curriculum_config
+        return info_dict
+
+    def apply_teacher_forcing(self, y, y_len, error_rate):
+        y_error = y.clone()
+        for b in range(len(y_len)):
+            for i in range(1, y_len[b]):
+                if (
+                    np.random.rand() < error_rate
+                    and y[b][i] != self.dataset.tokens["pad"]
+                ):
+                    y_error[b][i] = np.random.randint(0, len(self.dataset.charset) + 2)
+        return y_error, y_len
+
+    def train_batch(self, batch_data, metric_names):
+        loss_func = CrossEntropyLoss(ignore_index=self.dataset.tokens["pad"])
+
+        sum_loss = 0
+        x = batch_data["imgs"].to(self.device)
+        y = batch_data["labels"].to(self.device)
+        reduced_size = [s[:2] for s in batch_data["imgs_reduced_shape"]]
+        y_len = batch_data["labels_len"]
+
+        # add errors in teacher forcing
+        if (
+            "teacher_forcing_error_rate" in self.params["training_params"]
+            and self.params["training_params"]["teacher_forcing_error_rate"] is not None
+        ):
+            error_rate = self.params["training_params"]["teacher_forcing_error_rate"]
+            simulated_y_pred, y_len = self.apply_teacher_forcing(y, y_len, error_rate)
+        elif "teacher_forcing_scheduler" in self.params["training_params"]:
+            error_rate = (
+                self.params["training_params"]["teacher_forcing_scheduler"][
+                    "min_error_rate"
+                ]
+                + min(
+                    self.latest_step,
+                    self.params["training_params"]["teacher_forcing_scheduler"][
+                        "total_num_steps"
+                    ],
+                )
+                * (
+                    self.params["training_params"]["teacher_forcing_scheduler"][
+                        "max_error_rate"
+                    ]
+                    - self.params["training_params"]["teacher_forcing_scheduler"][
+                        "min_error_rate"
+                    ]
+                )
+                / self.params["training_params"]["teacher_forcing_scheduler"][
+                    "total_num_steps"
+                ]
+            )
+            simulated_y_pred, y_len = self.apply_teacher_forcing(y, y_len, error_rate)
+        else:
+            simulated_y_pred = y
+
+        with autocast(enabled=self.params["training_params"]["use_amp"]):
+            hidden_predict = None
+            cache = None
+
+            raw_features = self.models["encoder"](x)
+            features_size = raw_features.size()
+            b, c, h, w = features_size
+
+            pos_features = self.models["decoder"].features_updater.get_pos_features(
+                raw_features
+            )
+            features = torch.flatten(pos_features, start_dim=2, end_dim=3).permute(
+                2, 0, 1
+            )
+            enhanced_features = pos_features
+            enhanced_features = torch.flatten(
+                enhanced_features, start_dim=2, end_dim=3
+            ).permute(2, 0, 1)
+            output, pred, hidden_predict, cache, weights = self.models["decoder"](
+                features,
+                enhanced_features,
+                simulated_y_pred[:, :-1],
+                reduced_size,
+                [max(y_len) for _ in range(b)],
+                features_size,
+                start=0,
+                hidden_predict=hidden_predict,
+                cache=cache,
+                keep_all_weights=True,
+            )
+
+            loss_ce = loss_func(pred, y[:, 1:])
+            sum_loss += loss_ce
+            with autocast(enabled=False):
+                self.backward_loss(sum_loss)
+                self.step_optimizers()
+                self.zero_optimizers()
+            predicted_tokens = torch.argmax(pred, dim=1).detach().cpu().numpy()
+            predicted_tokens = [predicted_tokens[i, : y_len[i]] for i in range(b)]
+            str_x = [
+                LM_ind_to_str(self.dataset.charset, t, oov_symbol="")
+                for t in predicted_tokens
+            ]
+
+        values = {
+            "nb_samples": b,
+            "str_y": batch_data["raw_labels"],
+            "str_x": str_x,
+            "loss": sum_loss.item(),
+            "loss_ce": loss_ce.item(),
+            "syn_max_lines": self.dataset.train_dataset.get_syn_max_lines()
+            if self.params["dataset_params"]["config"]["synthetic_data"]
+            else 0,
+        }
+
+        return values
+
+    def evaluate_batch(self, batch_data, metric_names):
+        x = batch_data["imgs"].to(self.device)
+        reduced_size = [s[:2] for s in batch_data["imgs_reduced_shape"]]
+
+        max_chars = self.params["training_params"]["max_char_prediction"]
+
+        start_time = time()
+        with autocast(enabled=self.params["training_params"]["use_amp"]):
+            b = x.size(0)
+            reached_end = torch.zeros((b,), dtype=torch.bool, device=self.device)
+            prediction_len = torch.zeros((b,), dtype=torch.int, device=self.device)
+            predicted_tokens = (
+                torch.ones((b, 1), dtype=torch.long, device=self.device)
+                * self.dataset.tokens["start"]
+            )
+            predicted_tokens_len = torch.ones((b,), dtype=torch.int, device=self.device)
+
+            whole_output = list()
+            confidence_scores = list()
+            cache = None
+            hidden_predict = None
+            if b > 1:
+                features_list = list()
+                for i in range(b):
+                    pos = batch_data["imgs_position"]
+                    features_list.append(
+                        self.models["encoder"](
+                            x[
+                                i : i + 1,
+                                :,
+                                pos[i][0][0] : pos[i][0][1],
+                                pos[i][1][0] : pos[i][1][1],
+                            ]
+                        )
+                    )
+                max_height = max([f.size(2) for f in features_list])
+                max_width = max([f.size(3) for f in features_list])
+                features = torch.zeros(
+                    (b, features_list[0].size(1), max_height, max_width),
+                    device=self.device,
+                    dtype=features_list[0].dtype,
+                )
+                for i in range(b):
+                    features[
+                        i, :, : features_list[i].size(2), : features_list[i].size(3)
+                    ] = features_list[i]
+            else:
+                features = self.models["encoder"](x)
+            features_size = features.size()
+            coverage_vector = torch.zeros(
+                (features.size(0), 1, features.size(2), features.size(3)),
+                device=self.device,
+            )
+            pos_features = self.models["decoder"].features_updater.get_pos_features(
+                features
+            )
+            features = torch.flatten(pos_features, start_dim=2, end_dim=3).permute(
+                2, 0, 1
+            )
+            enhanced_features = pos_features
+            enhanced_features = torch.flatten(
+                enhanced_features, start_dim=2, end_dim=3
+            ).permute(2, 0, 1)
+
+            for i in range(0, max_chars):
+                output, pred, hidden_predict, cache, weights = self.models["decoder"](
+                    features,
+                    enhanced_features,
+                    predicted_tokens,
+                    reduced_size,
+                    predicted_tokens_len,
+                    features_size,
+                    start=0,
+                    hidden_predict=hidden_predict,
+                    cache=cache,
+                    num_pred=1,
+                )
+                whole_output.append(output)
+                confidence_scores.append(
+                    torch.max(torch.softmax(pred[:, :], dim=1), dim=1).values
+                )
+                coverage_vector = torch.clamp(coverage_vector + weights, 0, 1)
+                predicted_tokens = torch.cat(
+                    [
+                        predicted_tokens,
+                        torch.argmax(pred[:, :, -1], dim=1, keepdim=True),
+                    ],
+                    dim=1,
+                )
+                reached_end = torch.logical_or(
+                    reached_end,
+                    torch.eq(predicted_tokens[:, -1], self.dataset.tokens["end"]),
+                )
+                predicted_tokens_len += 1
+
+                prediction_len[reached_end is False] = i + 1
+                if torch.all(reached_end):
+                    break
+
+            confidence_scores = (
+                torch.cat(confidence_scores, dim=1).cpu().detach().numpy()
+            )
+            predicted_tokens = predicted_tokens[:, 1:]
+            prediction_len[torch.eq(reached_end, False)] = max_chars - 1
+            predicted_tokens = [
+                predicted_tokens[i, : prediction_len[i]] for i in range(b)
+            ]
+            confidence_scores = [
+                confidence_scores[i, : prediction_len[i]].tolist() for i in range(b)
+            ]
+            str_x = [
+                LM_ind_to_str(self.dataset.charset, t, oov_symbol="")
+                for t in predicted_tokens
+            ]
+
+        process_time = time() - start_time
+
+        values = {
+            "nb_samples": b,
+            "str_y": batch_data["raw_labels"],
+            "str_x": str_x,
+            "confidence_score": confidence_scores,
+            "time": process_time,
+        }
+        return values
diff --git a/dan/manager/utils.py b/dan/manager/utils.py
new file mode 100644
index 00000000..c95ca7ca
--- /dev/null
+++ b/dan/manager/utils.py
@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+import os
+import pickle
+
+from PIL import Image
+
+from dan.manager.training import GenericTrainingManager
+
+
+class OCRManager(GenericTrainingManager):
+    def __init__(self, params):
+        super(OCRManager, self).__init__(params)
+        self.params["model_params"]["vocab_size"] = len(self.dataset.charset)
+
+    def generate_syn_line_dataset(self, name):
+        """
+        Generate synthetic line dataset from currently loaded dataset
+        """
+        dataset_name = list(self.params["dataset_params"]["datasets"].keys())[0]
+        path = os.path.join(
+            os.path.dirname(self.params["dataset_params"]["datasets"][dataset_name]),
+            name,
+        )
+        os.makedirs(path, exist_ok=True)
+        charset = set()
+        dataset = None
+        gt = {"train": dict(), "valid": dict(), "test": dict()}
+        for set_name in ["train", "valid", "test"]:
+            set_path = os.path.join(path, set_name)
+            os.makedirs(set_path, exist_ok=True)
+            if set_name == "train":
+                dataset = self.dataset.train_dataset
+            elif set_name == "valid":
+                dataset = self.dataset.valid_datasets["{}-valid".format(dataset_name)]
+            elif set_name == "test":
+                self.dataset.generate_test_loader(
+                    "{}-test".format(dataset_name),
+                    [
+                        (dataset_name, "test"),
+                    ],
+                )
+                dataset = self.dataset.test_datasets["{}-test".format(dataset_name)]
+
+            samples = list()
+            for sample in dataset.samples:
+                for line_label in sample["label"].split("\n"):
+                    for chunk in [
+                        line_label[i : i + 100] for i in range(0, len(line_label), 100)
+                    ]:
+                        charset = charset.union(set(chunk))
+                        if len(chunk) > 0:
+                            samples.append(
+                                {
+                                    "path": sample["path"],
+                                    "label": chunk,
+                                    "nb_cols": 1,
+                                }
+                            )
+
+            for i, sample in enumerate(samples):
+                ext = sample["path"].split(".")[-1]
+                img_name = "{}_{}.{}".format(set_name, i, ext)
+                img_path = os.path.join(set_path, img_name)
+
+                img = dataset.generate_typed_text_line_image(sample["label"])
+                Image.fromarray(img).save(img_path)
+                gt[set_name][img_name] = {
+                    "text": sample["label"],
+                    "nb_cols": sample["nb_cols"] if "nb_cols" in sample else 1,
+                }
+                if "line_label" in sample:
+                    gt[set_name][img_name]["lines"] = sample["line_label"]
+
+        with open(os.path.join(path, "labels.pkl"), "wb") as f:
+            pickle.dump(
+                {
+                    "ground_truth": gt,
+                    "charset": sorted(list(charset)),
+                },
+                f,
+            )
diff --git a/dan/models.py b/dan/models.py
index 225d004c..6057cadd 100644
--- a/dan/models.py
+++ b/dan/models.py
@@ -1,39 +1,4 @@
 # -*- coding: utf-8 -*-
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in XXX whose purpose is XXX.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
-
 import random
 
 from torch.nn import (
diff --git a/dan/ocr/__init__.py b/dan/ocr/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/dan/ocr/document/__init__.py b/dan/ocr/document/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/dan/ocr/document/train.py b/dan/ocr/document/train.py
new file mode 100644
index 00000000..1f8216a9
--- /dev/null
+++ b/dan/ocr/document/train.py
@@ -0,0 +1,234 @@
+# -*- coding: utf-8 -*-
+import random
+
+import numpy as np
+import torch
+import torch.multiprocessing as mp
+from torch.optim import Adam
+
+from dan.decoder import GlobalHTADecoder
+from dan.manager.ocr import OCRDataset, OCRDatasetManager
+from dan.manager.training import Manager
+from dan.models import FCN_Encoder
+from dan.schedulers import exponential_dropout_scheduler
+from dan.transforms import aug_config
+
+
+def add_document_parser(subcommands) -> None:
+    parser = subcommands.add_parser(
+        "document",
+        description=__doc__,
+    )
+    parser.set_defaults(func=run)
+
+
+def train_and_test(rank, params):
+    torch.manual_seed(0)
+    torch.cuda.manual_seed(0)
+    np.random.seed(0)
+    random.seed(0)
+    torch.backends.cudnn.benchmark = False
+    torch.backends.cudnn.deterministic = True
+
+    params["training_params"]["ddp_rank"] = rank
+    model = Manager(params)
+    model.load_model()
+
+    model.train()
+
+    # load weights giving best CER on valid set
+    model.params["training_params"]["load_epoch"] = "best"
+    model.load_model()
+
+    metrics = ["cer", "wer", "time", "map_cer", "loer"]
+    for dataset_name in params["dataset_params"]["datasets"].keys():
+        for set_name in ["test", "valid", "train"]:
+            model.predict(
+                "{}-{}".format(dataset_name, set_name),
+                [
+                    (dataset_name, set_name),
+                ],
+                metrics,
+                output=True,
+            )
+
+
+def run():
+    dataset_name = "simara"
+    dataset_level = "page"
+    dataset_variant = "_sem"
+
+    params = {
+        "dataset_params": {
+            "dataset_manager": OCRDatasetManager,
+            "dataset_class": OCRDataset,
+            "datasets": {
+                dataset_name: "../../../Datasets/formatted/{}_{}{}".format(
+                    dataset_name, dataset_level, dataset_variant
+                ),
+            },
+            "train": {
+                "name": "{}-train".format(dataset_name),
+                "datasets": [
+                    (dataset_name, "train"),
+                ],
+            },
+            "valid": {
+                "{}-valid".format(dataset_name): [
+                    (dataset_name, "valid"),
+                ],
+            },
+            "config": {
+                "load_in_memory": True,  # Load all images in CPU memory
+                "worker_per_gpu": 4,  # Num of parallel processes per gpu for data loading
+                "width_divisor": 8,  # Image width will be divided by 8
+                "height_divisor": 32,  # Image height will be divided by 32
+                "padding_value": 0,  # Image padding value
+                "padding_token": None,  # Label padding value
+                "charset_mode": "seq2seq",  # add end-of-transcription and start-of-transcription tokens to charset
+                "constraints": [
+                    "add_eot",
+                    "add_sot",
+                ],  # add end-of-transcription and start-of-transcription tokens in labels
+                "normalize": True,  # Normalize with mean and variance of training dataset
+                "preprocessings": [
+                    {
+                        "type": "to_RGB",
+                        # if grayscaled image, produce RGB one (3 channels with same value) otherwise do nothing
+                    },
+                ],
+                "augmentation": aug_config(0.9, 0.1),
+                "synthetic_data": None,
+                # "synthetic_data": {
+                #    "init_proba": 0.9,  # begin proba to generate synthetic document
+                #    "end_proba": 0.2,  # end proba to generate synthetic document
+                #    "num_steps_proba": 200000,  # linearly decrease the percent of synthetic document from 90% to 20% through 200000 samples
+                #    "proba_scheduler_function": linear_scheduler,  # decrease proba rate linearly
+                #    "start_scheduler_at_max_line": True,  # start decreasing proba only after curriculum reach max number of lines
+                #    "dataset_level": dataset_level,
+                #    "curriculum": True,  # use curriculum learning (slowly increase number of lines per synthetic samples)
+                #    "crop_curriculum": True,  # during curriculum learning, crop images under the last text line
+                #    "curr_start": 0,  # start curriculum at iteration
+                #    "curr_step": 10000,  # interval to increase the number of lines for curriculum learning
+                #    "min_nb_lines": 1,  # initial number of lines for curriculum learning
+                #    "max_nb_lines": max_nb_lines[dataset_name],  # maximum number of lines for curriculum learning
+                #    "padding_value": 255,
+                #    # config for synthetic line generation
+                #    "config": {
+                #        "background_color_default": (255, 255, 255),
+                #        "background_color_eps": 15,
+                #        "text_color_default": (0, 0, 0),
+                #        "text_color_eps": 15,
+                #        "font_size_min": 35,
+                #        "font_size_max": 45,
+                #        "color_mode": "RGB",
+                #        "padding_left_ratio_min": 0.00,
+                #        "padding_left_ratio_max": 0.05,
+                #        "padding_right_ratio_min": 0.02,
+                #        "padding_right_ratio_max": 0.2,
+                #        "padding_top_ratio_min": 0.02,
+                #        "padding_top_ratio_max": 0.1,
+                #        "padding_bottom_ratio_min": 0.02,
+                #        "padding_bottom_ratio_max": 0.1,
+                #    },
+                # }
+            },
+        },
+        "model_params": {
+            "models": {
+                "encoder": FCN_Encoder,
+                "decoder": GlobalHTADecoder,
+            },
+            # "transfer_learning": None,
+            "transfer_learning": {
+                # model_name: [state_dict_name, checkpoint_path, learnable, strict]
+                "encoder": ["encoder", "dan_rimes_page.pt", True, True],
+                "decoder": ["decoder", "dan_rimes_page.pt", True, False],
+            },
+            "transfered_charset": True,  # Transfer learning of the decision layer based on charset of the line HTR model
+            "additional_tokens": 1,  # for decision layer = [<eot>, ], only for transferred charset
+            "input_channels": 3,  # number of channels of input image
+            "dropout": 0.5,  # dropout rate for encoder
+            "enc_dim": 256,  # dimension of extracted features
+            "nb_layers": 5,  # encoder
+            "h_max": 500,  # maximum height for encoder output (for 2D positional embedding)
+            "w_max": 1000,  # maximum width for encoder output (for 2D positional embedding)
+            "l_max": 15000,  # max predicted sequence (for 1D positional embedding)
+            "dec_num_layers": 8,  # number of transformer decoder layers
+            "dec_num_heads": 4,  # number of heads in transformer decoder layers
+            "dec_res_dropout": 0.1,  # dropout in transformer decoder layers
+            "dec_pred_dropout": 0.1,  # dropout rate before decision layer
+            "dec_att_dropout": 0.1,  # dropout rate in multi head attention
+            "dec_dim_feedforward": 256,  # number of dimension for feedforward layer in transformer decoder layers
+            "use_2d_pe": True,  # use 2D positional embedding
+            "use_1d_pe": True,  # use 1D positional embedding
+            "use_lstm": False,
+            "attention_win": 100,  # length of attention window
+            # Curriculum dropout
+            "dropout_scheduler": {
+                "function": exponential_dropout_scheduler,
+                "T": 5e4,
+            },
+        },
+        "training_params": {
+            "output_folder": "dan_simara_page",  # folder name for checkpoint and results
+            "max_nb_epochs": 50000,  # maximum number of epochs before to stop
+            "max_training_time": 3600
+            * 24
+            * 1.9,  # maximum time before to stop (in seconds)
+            "load_epoch": "last",  # ["best", "last"]: last to continue training, best to evaluate
+            "interval_save_weights": None,  # None: keep best and last only
+            "batch_size": 2,  # mini-batch size for training
+            "valid_batch_size": 4,  # mini-batch size for valdiation
+            "use_ddp": False,  # Use DistributedDataParallel
+            "ddp_port": "20027",
+            "use_amp": True,  # Enable automatic mix-precision
+            "nb_gpu": torch.cuda.device_count(),
+            "optimizers": {
+                "all": {
+                    "class": Adam,
+                    "args": {
+                        "lr": 0.0001,
+                        "amsgrad": False,
+                    },
+                },
+            },
+            "lr_schedulers": None,  # Learning rate schedulers
+            "eval_on_valid": True,  # Whether to eval and logs metrics on validation set during training or not
+            "eval_on_valid_interval": 5,  # Interval (in epochs) to evaluate during training
+            "focus_metric": "cer",  # Metrics to focus on to determine best epoch
+            "expected_metric_value": "low",  # ["high", "low"] What is best for the focus metric value
+            "set_name_focus_metric": "{}-valid".format(
+                dataset_name
+            ),  # Which dataset to focus on to select best weights
+            "train_metrics": [
+                "loss_ce",
+                "cer",
+                "wer",
+                "syn_max_lines",
+            ],  # Metrics name for training
+            "eval_metrics": [
+                "cer",
+                "wer",
+                "map_cer",
+            ],  # Metrics name for evaluation on validation set during training
+            "force_cpu": False,  # True for debug purposes
+            "max_char_prediction": 1000,  # max number of token prediction
+            # Keep teacher forcing rate to 20% during whole training
+            "teacher_forcing_scheduler": {
+                "min_error_rate": 0.2,
+                "max_error_rate": 0.2,
+                "total_num_steps": 5e4,
+            },
+        },
+    }
+
+    if (
+        params["training_params"]["use_ddp"]
+        and not params["training_params"]["force_cpu"]
+    ):
+        mp.spawn(
+            train_and_test, args=(params,), nprocs=params["training_params"]["nb_gpu"]
+        )
+    else:
+        train_and_test(0, params)
diff --git a/dan/ocr/line/__init__.py b/dan/ocr/line/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/dan/ocr/line/generate_synthetic.py b/dan/ocr/line/generate_synthetic.py
new file mode 100644
index 00000000..435e19ed
--- /dev/null
+++ b/dan/ocr/line/generate_synthetic.py
@@ -0,0 +1,165 @@
+# -*- coding: utf-8 -*-
+import random
+
+import numpy as np
+import torch
+import torch.multiprocessing as mp
+from torch.optim import Adam
+
+from dan.manager.ocr import OCRDataset, OCRDatasetManager
+from dan.models import FCN_Encoder
+from dan.ocr.line.model_utils import Decoder
+from dan.ocr.line.utils import TrainerLineCTC
+from dan.schedulers import exponential_dropout_scheduler, exponential_scheduler
+from dan.transforms import line_aug_config
+
+
+def add_generate_parser(subcommands) -> None:
+    parser = subcommands.add_parser(
+        "generate",
+        description=__doc__,
+    )
+    parser.set_defaults(func=run)
+
+
+def train_and_test(rank, params):
+    torch.manual_seed(0)
+    torch.cuda.manual_seed(0)
+    np.random.seed(0)
+    random.seed(0)
+    torch.backends.cudnn.benchmark = False
+    torch.backends.cudnn.deterministic = True
+
+    params["training_params"]["ddp_rank"] = rank
+    model = TrainerLineCTC(params)
+
+    model.generate_syn_line_dataset(
+        "READ_2016_syn_line"
+    )  # ["RIMES_syn_line", "READ_2016_syn_line"]
+
+
+def run():
+    dataset_name = "READ_2016"
+    dataset_level = "page"
+    params = {
+        "dataset_params": {
+            "dataset_manager": OCRDatasetManager,
+            "dataset_class": OCRDataset,
+            "datasets": {
+                dataset_name: "../../../Datasets/formatted/{}_{}".format(
+                    dataset_name, dataset_level
+                ),
+            },
+            "train": {
+                "name": "{}-train".format(dataset_name),
+                "datasets": [
+                    (dataset_name, "train"),
+                ],
+            },
+            "valid": {
+                "{}-valid".format(dataset_name): [
+                    (dataset_name, "valid"),
+                ],
+            },
+            "config": {
+                "load_in_memory": False,  # Load all images in CPU memory
+                "worker_per_gpu": 4,
+                "width_divisor": 8,  # Image width will be divided by 8
+                "height_divisor": 32,  # Image height will be divided by 32
+                "padding_value": 0,  # Image padding value
+                "padding_token": 1000,  # Label padding value (None: default value is chosen)
+                "padding_mode": "br",  # Padding at bottom and right
+                "charset_mode": "CTC",  # add blank token
+                "constraints": [],  # Padding for CTC requirements if necessary
+                "normalize": True,  # Normalize with mean and variance of training dataset
+                "preprocessings": [],
+                # Augmentation techniques to use at training time
+                "augmentation": line_aug_config(0.9, 0.1),
+                #
+                "synthetic_data": {
+                    "mode": "line_hw_to_printed",
+                    "init_proba": 1,
+                    "end_proba": 1,
+                    "num_steps_proba": 1e5,
+                    "proba_scheduler_function": exponential_scheduler,
+                    "config": {
+                        "background_color_default": (255, 255, 255),
+                        "background_color_eps": 15,
+                        "text_color_default": (0, 0, 0),
+                        "text_color_eps": 15,
+                        "font_size_min": 30,
+                        "font_size_max": 50,
+                        "color_mode": "RGB",
+                        "padding_left_ratio_min": 0.02,
+                        "padding_left_ratio_max": 0.1,
+                        "padding_right_ratio_min": 0.02,
+                        "padding_right_ratio_max": 0.1,
+                        "padding_top_ratio_min": 0.02,
+                        "padding_top_ratio_max": 0.2,
+                        "padding_bottom_ratio_min": 0.02,
+                        "padding_bottom_ratio_max": 0.2,
+                    },
+                },
+            },
+        },
+        "model_params": {
+            # Model classes to use for each module
+            "models": {
+                "encoder": FCN_Encoder,
+                "decoder": Decoder,
+            },
+            "transfer_learning": None,
+            "input_channels": 3,  # 1 for grayscale images, 3 for RGB ones (or grayscale as RGB)
+            "enc_size": 256,
+            "dropout_scheduler": {
+                "function": exponential_dropout_scheduler,
+                "T": 5e4,
+            },
+            "dropout": 0.5,
+        },
+        "training_params": {
+            "output_folder": "FCN_Encoder_read_syn_line_all_pad_max_cursive",  # folder names for logs and weights
+            "max_nb_epochs": 10000,  # max number of epochs for the training
+            "max_training_time": 3600
+            * 24
+            * 1.9,  # max training time limit (in seconds)
+            "load_epoch": "last",  # ["best", "last"], to load weights from best epoch or last trained epoch
+            "interval_save_weights": None,  # None: keep best and last only
+            "use_ddp": False,  # Use DistributedDataParallel
+            "use_amp": True,  # Enable automatic mix-precision
+            "nb_gpu": torch.cuda.device_count(),
+            "batch_size": 1,  # mini-batch size per GPU
+            "optimizers": {
+                "all": {
+                    "class": Adam,
+                    "args": {
+                        "lr": 0.0001,
+                        "amsgrad": False,
+                    },
+                }
+            },
+            "lr_schedulers": None,
+            "eval_on_valid": True,  # Whether to eval and logs metrics on validation set during training or not
+            "eval_on_valid_interval": 2,  # Interval (in epochs) to evaluate during training
+            "focus_metric": "cer",  # Metrics to focus on to determine best epoch
+            "expected_metric_value": "low",  # ["high", "low"] What is best for the focus metric value
+            "set_name_focus_metric": "{}-valid".format(dataset_name),
+            "train_metrics": ["loss_ctc", "cer", "wer"],  # Metrics name for training
+            "eval_metrics": [
+                "loss_ctc",
+                "cer",
+                "wer",
+            ],  # Metrics name for evaluation on validation set during training
+            "force_cpu": False,  # True for debug purposes to run on cpu only
+        },
+    }
+
+    if (
+        params["training_params"]["use_ddp"]
+        and not params["training_params"]["force_cpu"]
+    ):
+        mp.spawn(
+            train_and_test, args=(params,), nprocs=params["training_params"]["nb_gpu"]
+        )
+    else:
+        train_and_test(0, params)
diff --git a/dan/ocr/line/model_utils.py b/dan/ocr/line/model_utils.py
new file mode 100644
index 00000000..9417e800
--- /dev/null
+++ b/dan/ocr/line/model_utils.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+from torch.nn import AdaptiveMaxPool2d, Conv1d, Module
+from torch.nn.functional import log_softmax
+
+
+class Decoder(Module):
+    def __init__(self, params):
+        super(Decoder, self).__init__()
+
+        self.vocab_size = params["vocab_size"]
+
+        self.ada_pool = AdaptiveMaxPool2d((1, None))
+        self.end_conv = Conv1d(
+            in_channels=params["enc_size"],
+            out_channels=self.vocab_size + 1,
+            kernel_size=1,
+        )
+
+    def forward(self, x):
+        x = self.ada_pool(x).squeeze(2)
+        x = self.end_conv(x)
+        return log_softmax(x, dim=1)
diff --git a/dan/ocr/line/train.py b/dan/ocr/line/train.py
new file mode 100644
index 00000000..9e092fd9
--- /dev/null
+++ b/dan/ocr/line/train.py
@@ -0,0 +1,207 @@
+# -*- coding: utf-8 -*-
+import random
+
+import numpy as np
+import torch
+import torch.multiprocessing as mp
+from torch.optim import Adam
+
+from dan.manager.ocr import OCRDataset, OCRDatasetManager
+from dan.models import FCN_Encoder
+from dan.ocr.line.model_utils import Decoder
+from dan.ocr.line.utils import TrainerLineCTC
+from dan.schedulers import exponential_dropout_scheduler, exponential_scheduler
+from dan.transforms import line_aug_config
+
+
+def add_line_parser(subcommands) -> None:
+    parser = subcommands.add_parser(
+        "line",
+        description=__doc__,
+    )
+    parser.set_defaults(func=run)
+
+
+def train_and_test(rank, params):
+    torch.manual_seed(0)
+    torch.cuda.manual_seed(0)
+    np.random.seed(0)
+    random.seed(0)
+    torch.backends.cudnn.benchmark = False
+    torch.backends.cudnn.deterministic = True
+
+    params["training_params"]["ddp_rank"] = rank
+    model = TrainerLineCTC(params)
+    model.load_model()
+
+    # Model trains until max_time_training or max_nb_epochs is reached
+    model.train()
+
+    # load weights giving best CER on valid set
+    model.params["training_params"]["load_epoch"] = "best"
+    model.load_model()
+
+    # compute metrics on train, valid and test sets (in eval conditions)
+    metrics = [
+        "cer",
+        "wer",
+        "time",
+    ]
+    for dataset_name in params["dataset_params"]["datasets"].keys():
+        for set_name in [
+            "test",
+            "valid",
+            "train",
+        ]:
+            model.predict(
+                "{}-{}".format(dataset_name, set_name),
+                [
+                    (dataset_name, set_name),
+                ],
+                metrics,
+                output=True,
+            )
+
+
+def run():
+    dataset_name = "READ_2016"  # ["RIMES", "READ_2016"]
+    dataset_level = "syn_line"
+    params = {
+        "dataset_params": {
+            "dataset_manager": OCRDatasetManager,
+            "dataset_class": OCRDataset,
+            "datasets": {
+                dataset_name: "../../../Datasets/formatted/{}_{}".format(
+                    dataset_name, dataset_level
+                ),
+            },
+            "train": {
+                "name": "{}-train".format(dataset_name),
+                "datasets": [
+                    (dataset_name, "train"),
+                ],
+            },
+            "valid": {
+                "{}-valid".format(dataset_name): [
+                    (dataset_name, "valid"),
+                ],
+            },
+            "config": {
+                "load_in_memory": True,  # Load all images in CPU memory
+                "worker_per_gpu": 8,  # Num of parallel processes per gpu for data loading
+                "width_divisor": 8,  # Image width will be divided by 8
+                "height_divisor": 32,  # Image height will be divided by 32
+                "padding_value": 0,  # Image padding value
+                "padding_token": 1000,  # Label padding value (None: default value is chosen)
+                "padding_mode": "br",  # Padding at bottom and right
+                "charset_mode": "CTC",  # add blank token
+                "constraints": [
+                    "CTC_line",
+                ],  # Padding for CTC requirements if necessary
+                "normalize": True,  # Normalize with mean and variance of training dataset
+                "padding": {
+                    "min_height": "max",  # Pad to reach max height of training samples
+                    "min_width": "max",  # Pad to reach max width of training samples
+                    "min_pad": None,
+                    "max_pad": None,
+                    "mode": "br",  # Padding at bottom and right
+                    "train_only": False,  # Add padding at training time and evaluation time
+                },
+                "preprocessings": [
+                    {
+                        "type": "to_RGB",
+                        # if grayscale image, produce RGB one (3 channels with same value) otherwise do nothing
+                    },
+                ],
+                # Augmentation techniques to use at training time
+                "augmentation": line_aug_config(0.9, 0.1),
+                #
+                "synthetic_data": {
+                    "mode": "line_hw_to_printed",
+                    "init_proba": 1,
+                    "end_proba": 1,
+                    "num_steps_proba": 1e5,
+                    "probadocument_scheduler_function": exponential_scheduler,
+                    "config": {
+                        "background_color_default": (255, 255, 255),
+                        "background_color_eps": 15,
+                        "text_color_default": (0, 0, 0),
+                        "text_color_eps": 15,
+                        "font_size_min": 30,
+                        "font_size_max": 50,
+                        "color_mode": "RGB",
+                        "padding_left_ratio_min": 0.02,
+                        "padding_left_ratio_max": 0.1,
+                        "padding_right_ratio_min": 0.02,
+                        "padding_right_ratio_max": 0.1,
+                        "padding_top_ratio_min": 0.02,
+                        "padding_top_ratio_max": 0.2,
+                        "padding_bottom_ratio_min": 0.02,
+                        "padding_bottom_ratio_max": 0.2,
+                    },
+                },
+            },
+        },
+        "model_params": {
+            # Model classes to use for each module
+            "models": {
+                "encoder": FCN_Encoder,
+                "decoder": Decoder,
+            },
+            "transfer_learning": None,
+            "input_channels": 3,  # 1 for grayscale images, 3 for RGB ones (or grayscale as RGB)
+            "enc_size": 256,
+            "dropout_scheduler": {
+                "function": exponential_dropout_scheduler,
+                "T": 5e4,
+            },
+            "dropout": 0.5,
+        },
+        "training_params": {
+            "output_folder": "FCN_read_2016_line_syn",  # folder names for logs and weights
+            "max_nb_epochs": 10000,  # max number of epochs for the training
+            "max_training_time": 3600
+            * 24
+            * 1.9,  # max training time limit (in seconds)
+            "load_epoch": "last",  # ["best", "last"], to load weights from best epoch or last trained epoch
+            "interval_save_weights": None,  # None: keep best and last only
+            "use_ddp": False,  # Use DistributedDataParallel
+            "use_amp": True,  # Enable automatic mix-precision
+            "nb_gpu": torch.cuda.device_count(),
+            "batch_size": 16,  # mini-batch size per GPU
+            "optimizers": {
+                "all": {
+                    "class": Adam,
+                    "args": {
+                        "lr": 0.0001,
+                        "amsgrad": False,
+                    },
+                }
+            },
+            "lr_schedulers": None,  # Learning rate schedulers
+            "eval_on_valid": True,  # Whether to eval and logs metrics on validation set during training or not
+            "eval_on_valid_interval": 2,  # Interval (in epochs) to evaluate during training
+            "focus_metric": "cer",  # Metrics to focus on to determine best epoch
+            "expected_metric_value": "low",  # ["high", "low"] What is best for the focus metric value
+            "set_name_focus_metric": "{}-valid".format(
+                dataset_name
+            ),  # Which dataset to focus on to select best weights
+            "train_metrics": ["loss_ctc", "cer", "wer"],  # Metrics name for training
+            "eval_metrics": [
+                "loss_ctc",
+                "cer",
+                "wer",
+            ],  # Metrics name for evaluation on validation set during training
+            "force_cpu": False,  # True for debug purposes to run on cpu only
+        },
+    }
+
+    if (
+        params["training_params"]["use_ddp"]
+        and not params["training_params"]["force_cpu"]
+    ):
+        mp.spawn(
+            train_and_test, args=(params,), nprocs=params["training_params"]["nb_gpu"]
+        )
+    else:
+        train_and_test(0, params)
diff --git a/dan/ocr/line/utils.py b/dan/ocr/line/utils.py
new file mode 100644
index 00000000..01ed68be
--- /dev/null
+++ b/dan/ocr/line/utils.py
@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+import re
+import time
+
+import torch
+from torch.cuda.amp import autocast
+from torch.nn import CTCLoss
+
+from dan.manager.training import OCRManager
+from dan.ocr.utils import LM_ind_to_str
+
+
+class TrainerLineCTC(OCRManager):
+    def __init__(self, params):
+        super(TrainerLineCTC, self).__init__(params)
+
+    def train_batch(self, batch_data, metric_names):
+        """
+        Forward and backward pass for training
+        """
+        x = batch_data["imgs"].to(self.device)
+        y = batch_data["labels"].to(self.device)
+        x_reduced_len = [s[1] for s in batch_data["imgs_reduced_shape"]]
+        y_len = batch_data["labels_len"]
+
+        loss_ctc = CTCLoss(blank=self.dataset.tokens["blank"])
+        self.zero_optimizers()
+
+        with autocast(enabled=self.params["training_params"]["use_amp"]):
+            x = self.models["encoder"](x)
+            global_pred = self.models["decoder"](x)
+
+        loss = loss_ctc(global_pred.permute(2, 0, 1), y, x_reduced_len, y_len)
+
+        self.backward_loss(loss)
+
+        self.step_optimizers()
+        pred = torch.argmax(global_pred, dim=1).cpu().numpy()
+
+        values = {
+            "nb_samples": len(batch_data["raw_labels"]),
+            "loss_ctc": loss.item(),
+            "str_x": self.pred_to_str(pred, x_reduced_len),
+            "str_y": batch_data["raw_labels"],
+        }
+
+        return values
+
+    def evaluate_batch(self, batch_data, metric_names):
+        """
+        Forward pass only for validation and test
+        """
+        x = batch_data["imgs"].to(self.device)
+        y = batch_data["labels"].to(self.device)
+        x_reduced_len = [s[1] for s in batch_data["imgs_reduced_shape"]]
+        y_len = batch_data["labels_len"]
+
+        loss_ctc = CTCLoss(blank=self.dataset.tokens["blank"])
+
+        start_time = time.time()
+        with autocast(enabled=self.params["training_params"]["use_amp"]):
+            x = self.models["encoder"](x)
+            global_pred = self.models["decoder"](x)
+
+        loss = loss_ctc(global_pred.permute(2, 0, 1), y, x_reduced_len, y_len)
+        pred = torch.argmax(global_pred, dim=1).cpu().numpy()
+        str_x = self.pred_to_str(pred, x_reduced_len)
+
+        process_time = time.time() - start_time
+
+        values = {
+            "nb_samples": len(batch_data["raw_labels"]),
+            "loss_ctc": loss.item(),
+            "str_x": str_x,
+            "str_y": batch_data["raw_labels"],
+            "time": process_time,
+        }
+        return values
+
+    def ctc_remove_successives_identical_ind(self, ind):
+        res = []
+        for i in ind:
+            if res and res[-1] == i:
+                continue
+            res.append(i)
+        return res
+
+    def pred_to_str(self, pred, pred_len):
+        """
+        convert prediction tokens to string
+        """
+        ind_x = [pred[i][: pred_len[i]] for i in range(pred.shape[0])]
+        ind_x = [self.ctc_remove_successives_identical_ind(t) for t in ind_x]
+        str_x = [LM_ind_to_str(self.dataset.charset, t, oov_symbol="") for t in ind_x]
+        str_x = [re.sub("( )+", " ", t).strip(" ") for t in str_x]
+        return str_x
diff --git a/dan/ocr/train.py b/dan/ocr/train.py
new file mode 100644
index 00000000..1bcbe1c7
--- /dev/null
+++ b/dan/ocr/train.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+
+from dan.ocr.line.train import add_line_parser
+from dan.ocr.document.train import add_document_parser
+
+def add_train_parser(subcommands) -> None:
+    parser = subcommands.add_parser(
+        "train",
+        description=__doc__,
+    )
+    subcommands = parser.add_subparsers(metavar="subcommand")
+
+    add_line_parser(subcommands)
+    add_document_parser(subcommands)
diff --git a/dan/ocr/utils.py b/dan/ocr/utils.py
new file mode 100644
index 00000000..8038f6f9
--- /dev/null
+++ b/dan/ocr/utils.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+# Charset / labels conversion
+def LM_str_to_ind(labels, str):
+    return [labels.index(c) for c in str]
+
+
+def LM_ind_to_str(labels, ind, oov_symbol=None):
+    if oov_symbol is not None:
+        res = []
+        for i in ind:
+            if i < len(labels):
+                res.append(labels[i])
+            else:
+                res.append(oov_symbol)
+    else:
+        res = [labels[i] for i in ind]
+    return "".join(res)
diff --git a/dan/ocr_utils.py b/dan/ocr_utils.py
deleted file mode 100644
index 4685f66f..00000000
--- a/dan/ocr_utils.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# -*- coding: utf-8 -*-
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
-
-# Charset / labels conversion
-def LM_str_to_ind(labels, str):
-    return [labels.index(c) for c in str]
-
-
-def LM_ind_to_str(labels, ind, oov_symbol=None):
-    if oov_symbol is not None:
-        res = []
-        for i in ind:
-            if i < len(labels):
-                res.append(labels[i])
-            else:
-                res.append(oov_symbol)
-    else:
-        res = [labels[i] for i in ind]
-    return "".join(res)
diff --git a/dan/post_processing.py b/dan/post_processing.py
index 3b456ba5..1242959c 100644
--- a/dan/post_processing.py
+++ b/dan/post_processing.py
@@ -1,50 +1,7 @@
 # -*- coding: utf-8 -*-
-#  Copyright Université de Rouen Normandie (1), INSA Rouen (2),
-#  tutelles du laboratoire LITIS (1 et 2)
-#  contributors :
-#  - Denis Coquenet
-#
-#
-#  This software is a computer program written in Python  whose purpose is to
-#  provide public implementation of deep learning works, in pytorch.
-#
-#  This software is governed by the CeCILL-C license under French law and
-#  abiding by the rules of distribution of free software.  You can  use,
-#  modify and/ or redistribute the software under the terms of the CeCILL-C
-#  license as circulated by CEA, CNRS and INRIA at the following URL
-#  "http://www.cecill.info".
-#
-#  As a counterpart to the access to the source code and  rights to copy,
-#  modify and redistribute granted by the license, users are provided only
-#  with a limited warranty  and the software's author,  the holder of the
-#  economic rights,  and the successive licensors  have only  limited
-#  liability.
-#
-#  In this respect, the user's attention is drawn to the risks associated
-#  with loading,  using,  modifying and/or developing or reproducing the
-#  software by the user in light of its specific status of free software,
-#  that may mean  that it is complicated to manipulate,  and  that  also
-#  therefore means  that it is reserved for developers  and  experienced
-#  professionals having in-depth computer knowledge. Users are therefore
-#  encouraged to load and test the software's suitability as regards their
-#  requirements in conditions enabling the security of their systems and/or
-#  data to be ensured and,  more generally, to use and operate it in the
-#  same conditions as regards security.
-#
-#  The fact that you are presently reading this means that you have had
-#  knowledge of the CeCILL-C license and that you accept its terms.
-
 import numpy as np
 
-from Datasets.dataset_formatters.read2016_formatter import (
-    SEM_MATCHING_TOKENS as READ_MATCHING_TOKENS,
-)
-from Datasets.dataset_formatters.rimes_formatter import (
-    SEM_MATCHING_TOKENS as RIMES_MATCHING_TOKENS,
-)
-from Datasets.dataset_formatters.simara_formatter import (
-    SEM_MATCHING_TOKENS as SIMARA_MATCHING_TOKENS,
-)
+from dan.datasets.format.simara import SEM_MATCHING_TOKENS as SIMARA_MATCHING_TOKENS
 
 
 class PostProcessingModule:
@@ -94,193 +51,6 @@ class PostProcessingModule:
         self.num_op += 1
 
 
-class PostProcessingModuleREAD(PostProcessingModule):
-    """
-    Specific post-processing for the READ 2016 dataset at single-page and double-page levels
-    """
-
-    def __init__(self):
-        super(PostProcessingModuleREAD, self).__init__()
-
-        self.matching_tokens = READ_MATCHING_TOKENS
-        self.reverse_matching_tokens = dict()
-        for key in self.matching_tokens:
-            self.reverse_matching_tokens[self.matching_tokens[key]] = key
-
-    def post_processing_page_labels(self):
-        """
-        Correct tokens of page detection.
-        """
-        ind = 0
-        while ind != len(self.prediction):
-            # Label must start with a begin-page token
-            if ind == 0 and self.prediction[ind] != "ⓟ":
-                self.insert_label(0, "ⓟ")
-                continue
-            # There cannot be tokens out of begin-page end-page scope: begin-page must be preceded by end-page
-            if (
-                self.prediction[ind] == "ⓟ"
-                and ind != 0
-                and self.prediction[ind - 1] != "â“…"
-            ):
-                self.insert_label(ind, "â“…")
-                continue
-            # There cannot be tokens out of begin-page end-page scope: end-page must be followed by begin-page
-            if (
-                self.prediction[ind] == "â“…"
-                and ind < len(self.prediction) - 1
-                and self.prediction[ind + 1] != "ⓟ"
-            ):
-                self.insert_label(ind + 1, "ⓟ")
-            ind += 1
-        # Label must start with a begin-page token even for empty prediction
-        if len(self.prediction) == 0:
-            self.insert_label(0, "ⓟ")
-            ind += 1
-        # Label must end with a end-page token
-        if self.prediction[-1] != "â“…":
-            self.insert_label(ind, "â“…")
-
-    def post_processing(self):
-        """
-        Correct tokens of page number, section, body and annotations.
-        """
-        self.post_processing_page_labels()
-        ind = 0
-        begin_token = None
-        in_section = False
-        while ind != len(self.prediction):
-            # each tags must be closed while changing page
-            if self.prediction[ind] == "â“…":
-                if begin_token is not None:
-                    self.insert_label(ind, self.matching_tokens[begin_token])
-                    begin_token = None
-                    ind += 1
-                elif in_section:
-                    self.insert_label(ind, self.matching_tokens["â“¢"])
-                    in_section = False
-                    ind += 1
-                else:
-                    ind += 1
-                continue
-            # End token is removed if the previous begin token does not match with it
-            if self.prediction[ind] in "ⓃⒶⒷ":
-                if begin_token == self.reverse_matching_tokens[self.prediction[ind]]:
-                    begin_token = None
-                    ind += 1
-                else:
-                    self.del_label(ind)
-                continue
-            if self.prediction[ind] == "Ⓢ":
-                # each sub-tags must be closed while closing section
-                if in_section:
-                    if begin_token is None:
-                        in_section = False
-                        ind += 1
-                    else:
-                        self.insert_label(ind, self.matching_tokens[begin_token])
-                        begin_token = None
-                        ind += 2
-                else:
-                    self.del_label(ind)
-                continue
-            if self.prediction[ind] == "â“¢":
-                # A sub-tag must be closed before opening a section
-                if begin_token is not None:
-                    self.insert_label(ind, self.matching_tokens[begin_token])
-                    begin_token = None
-                    ind += 1
-                # A section must be closed before opening a new one
-                elif in_section:
-                    self.insert_label(ind, "Ⓢ")
-                    in_section = False
-                    ind += 1
-                else:
-                    in_section = True
-                    ind += 1
-                continue
-            if self.prediction[ind] == "ⓝ":
-                # Page number cannot be in section: a started section must be closed
-                if begin_token is None:
-                    if in_section:
-                        in_section = False
-                        self.insert_label(ind, "Ⓢ")
-                        ind += 1
-                    begin_token = self.prediction[ind]
-                    ind += 1
-                else:
-                    self.insert_label(ind, self.matching_tokens[begin_token])
-                    begin_token = None
-                    ind += 1
-                continue
-            if self.prediction[ind] in "ⓐⓑ":
-                # Annotation and body must be in section
-                if begin_token is None:
-                    if in_section:
-                        begin_token = self.prediction[ind]
-                        ind += 1
-                    else:
-                        in_section = True
-                        self.insert_label(ind, "â“¢")
-                        ind += 1
-                # Previous sub-tag must be closed
-                else:
-                    self.insert_label(ind, self.matching_tokens[begin_token])
-                    begin_token = None
-                    ind += 1
-                continue
-            ind += 1
-        res = "".join(self.prediction)
-        if self.confidence is not None:
-            return res, np.array(self.confidence)
-        return res
-
-
-class PostProcessingModuleRIMES(PostProcessingModule):
-    """
-    Specific post-processing for the RIMES dataset at page level
-    """
-
-    def __init__(self):
-        super(PostProcessingModuleRIMES, self).__init__()
-        self.matching_tokens = RIMES_MATCHING_TOKENS
-        self.reverse_matching_tokens = dict()
-        for key in self.matching_tokens:
-            self.reverse_matching_tokens[self.matching_tokens[key]] = key
-
-    def post_processing(self):
-        ind = 0
-        begin_token = None
-        while ind != len(self.prediction):
-            char = self.prediction[ind]
-            # a tag must be closed before starting a new one
-            if char in self.matching_tokens.keys():
-                if begin_token is None:
-                    ind += 1
-                else:
-                    self.insert_label(ind, self.matching_tokens[begin_token])
-                    ind += 2
-                begin_token = char
-                continue
-            # an end token without prior corresponding begin token is removed
-            elif char in self.matching_tokens.values():
-                if begin_token == self.reverse_matching_tokens[char]:
-                    ind += 1
-                    begin_token = None
-                else:
-                    self.del_label(ind)
-                continue
-            else:
-                ind += 1
-        # a tag must be closed
-        if begin_token is not None:
-            self.insert_label(ind + 1, self.matching_tokens[begin_token])
-        res = "".join(self.prediction)
-        if self.confidence is not None:
-            return res, np.array(self.confidence)
-        return res
-
-
 class PostProcessingModuleSIMARA(PostProcessingModule):
     """
     Specific post-processing for the SIMARA dataset at page level
diff --git a/dan/predict.py b/dan/predict.py
index 4473af17..753e584d 100644
--- a/dan/predict.py
+++ b/dan/predict.py
@@ -10,7 +10,7 @@ import yaml
 
 from dan.decoder import GlobalHTADecoder
 from dan.models import FCN_Encoder
-from dan.ocr_utils import LM_ind_to_str
+from dan.ocr.utils import LM_ind_to_str
 
 
 class DAN:
diff --git a/dan/schedulers.py b/dan/schedulers.py
new file mode 100644
index 00000000..f801804b
--- /dev/null
+++ b/dan/schedulers.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+import numpy as np
+from torch.nn import Dropout, Dropout2d
+
+
+class DropoutScheduler:
+    def __init__(self, models, function, T=1e5):
+        """
+        T: number of gradient updates to converge
+        """
+
+        self.teta_list = list()
+        self.init_teta_list(models)
+        self.function = function
+        self.T = T
+        self.step_num = 0
+
+    def step(self, num):
+        self.step_num += num
+
+    def init_teta_list(self, models):
+        for model_name in models.keys():
+            self.init_teta_list_module(models[model_name])
+
+    def init_teta_list_module(self, module):
+        for child in module.children():
+            if isinstance(child, Dropout) or isinstance(child, Dropout2d):
+                self.teta_list.append([child, child.p])
+            else:
+                self.init_teta_list_module(child)
+
+    def update_dropout_rate(self):
+        for (module, p) in self.teta_list:
+            module.p = self.function(p, self.step_num, self.T)
+
+
+def exponential_dropout_scheduler(dropout_rate, step, max_step):
+    return dropout_rate * (1 - np.exp(-10 * step / max_step))
+
+
+def exponential_scheduler(init_value, end_value, step, max_step):
+    step = min(step, max_step - 1)
+    return init_value - (init_value - end_value) * (1 - np.exp(-10 * step / max_step))
+
+
+def linear_scheduler(init_value, end_value, step, max_step):
+    return init_value + step * (end_value - init_value) / max_step
diff --git a/dan/transforms.py b/dan/transforms.py
new file mode 100644
index 00000000..b33489c6
--- /dev/null
+++ b/dan/transforms.py
@@ -0,0 +1,510 @@
+# -*- coding: utf-8 -*-
+"""
+Each transform class defined here takes as input a PIL Image and returns the modified PIL Image
+"""
+import math
+
+import cv2
+import numpy as np
+from cv2 import dilate, erode, normalize
+from numpy import random
+from PIL import Image, ImageOps
+from torchvision.transforms import (
+    ColorJitter,
+    GaussianBlur,
+    RandomCrop,
+    RandomPerspective,
+)
+from torchvision.transforms.functional import InterpolationMode
+
+from dan.utils import rand, rand_uniform, randint
+
+
+class SignFlipping:
+    """
+    Color inversion
+    """
+
+    def __init__(self):
+        pass
+
+    def __call__(self, x):
+        return ImageOps.invert(x)
+
+
+class DPIAdjusting:
+    """
+    Resolution modification
+    """
+
+    def __init__(self, factor, preserve_ratio):
+        self.factor = factor
+
+    def __call__(self, x):
+        w, h = x.size
+        return x.resize(
+            (int(np.ceil(w * self.factor)), int(np.ceil(h * self.factor))),
+            Image.BILINEAR,
+        )
+
+
+class Dilation:
+    """
+    OCR: stroke width increasing
+    """
+
+    def __init__(self, kernel, iterations):
+        self.kernel = np.ones(kernel, np.uint8)
+        self.iterations = iterations
+
+    def __call__(self, x):
+        return Image.fromarray(
+            dilate(np.array(x), self.kernel, iterations=self.iterations)
+        )
+
+
+class Erosion:
+    """
+    OCR: stroke width decreasing
+    """
+
+    def __init__(self, kernel, iterations):
+        self.kernel = np.ones(kernel, np.uint8)
+        self.iterations = iterations
+
+    def __call__(self, x):
+        return Image.fromarray(
+            erode(np.array(x), self.kernel, iterations=self.iterations)
+        )
+
+
+class GaussianNoise:
+    """
+    Add Gaussian Noise
+    """
+
+    def __init__(self, std):
+        self.std = std
+
+    def __call__(self, x):
+        x_np = np.array(x)
+        mean, std = np.mean(x_np), np.std(x_np)
+        std = math.copysign(max(abs(std), 0.000001), std)
+        min_, max_ = np.min(
+            x_np,
+        ), np.max(x_np)
+        normal_noise = np.random.randn(*x_np.shape)
+        if (
+            len(x_np.shape) == 3
+            and x_np.shape[2] == 3
+            and np.all(x_np[:, :, 0] == x_np[:, :, 1])
+            and np.all(x_np[:, :, 0] == x_np[:, :, 2])
+        ):
+            normal_noise[:, :, 1] = normal_noise[:, :, 2] = normal_noise[:, :, 0]
+        x_np = ((x_np - mean) / std + normal_noise * self.std) * std + mean
+        x_np = normalize(x_np, x_np, max_, min_, cv2.NORM_MINMAX)
+
+        return Image.fromarray(x_np.astype(np.uint8))
+
+
+class Sharpen:
+    """
+    Add Gaussian Noise
+    """
+
+    def __init__(self, alpha, strength):
+        self.alpha = alpha
+        self.strength = strength
+
+    def __call__(self, x):
+        x_np = np.array(x)
+        id_matrix = np.array([[0, 0, 0], [0, 1, 0], [0, 0, 0]])
+        effect_matrix = np.array([[1, 1, 1], [1, -(8 + self.strength), 1], [1, 1, 1]])
+        kernel = (1 - self.alpha) * id_matrix - self.alpha * effect_matrix
+        kernel = np.expand_dims(kernel, axis=2)
+        kernel = np.concatenate([kernel, kernel, kernel], axis=2)
+        sharpened = cv2.filter2D(x_np, -1, kernel=kernel[:, :, 0])
+        return Image.fromarray(sharpened.astype(np.uint8))
+
+
+class ZoomRatio:
+    """
+    Crop by ratio
+    Preserve dimensions if keep_dim = True (= zoom)
+    """
+
+    def __init__(self, ratio_h, ratio_w, keep_dim=True):
+        self.ratio_w = ratio_w
+        self.ratio_h = ratio_h
+        self.keep_dim = keep_dim
+
+    def __call__(self, x):
+        w, h = x.size
+        x = RandomCrop((int(h * self.ratio_h), int(w * self.ratio_w)))(x)
+        if self.keep_dim:
+            x = x.resize((w, h), Image.BILINEAR)
+        return x
+
+
+class ElasticDistortion:
+    def __init__(self, kernel_size=(7, 7), sigma=5, alpha=1):
+
+        self.kernel_size = kernel_size
+        self.sigma = sigma
+        self.alpha = alpha
+
+    def __call__(self, x):
+        x_np = np.array(x)
+
+        h, w = x_np.shape[:2]
+
+        dx = np.random.uniform(-1, 1, (h, w))
+        dy = np.random.uniform(-1, 1, (h, w))
+
+        x_gauss = cv2.GaussianBlur(dx, self.kernel_size, self.sigma)
+        y_gauss = cv2.GaussianBlur(dy, self.kernel_size, self.sigma)
+
+        n = np.sqrt(x_gauss**2 + y_gauss**2)
+
+        nd_x = self.alpha * x_gauss / n
+        nd_y = self.alpha * y_gauss / n
+
+        ind_y, ind_x = np.indices((h, w), dtype=np.float32)
+
+        map_x = nd_x + ind_x
+        map_x = map_x.reshape(h, w).astype(np.float32)
+        map_y = nd_y + ind_y
+        map_y = map_y.reshape(h, w).astype(np.float32)
+
+        dst = cv2.remap(x_np, map_x, map_y, cv2.INTER_LINEAR)
+        return Image.fromarray(dst.astype(np.uint8))
+
+
+class Tightening:
+    """
+    Reduce interline spacing
+    """
+
+    def __init__(self, color=255, remove_proba=0.75):
+        self.color = color
+        self.remove_proba = remove_proba
+
+    def __call__(self, x):
+        x_np = np.array(x)
+        interline_indices = [np.all(line == 255) for line in x_np]
+        indices_to_removed = np.logical_and(
+            np.random.choice(
+                [True, False],
+                size=len(x_np),
+                replace=True,
+                p=[self.remove_proba, 1 - self.remove_proba],
+            ),
+            interline_indices,
+        )
+        new_x = x_np[np.logical_not(indices_to_removed)]
+        return Image.fromarray(new_x.astype(np.uint8))
+
+
+def get_list_augmenters(img, aug_configs, fill_value):
+    """
+    Randomly select a list of data augmentation techniques to used based on aug_configs
+    """
+    augmenters = list()
+    for aug_config in aug_configs:
+        if rand() > aug_config["proba"]:
+            continue
+        if aug_config["type"] == "dpi":
+            valid_factor = False
+            while not valid_factor:
+                factor = rand_uniform(
+                    aug_config["min_factor"], aug_config["max_factor"]
+                )
+                valid_factor = not (
+                    (
+                        "max_width" in aug_config
+                        and factor * img.size[0] > aug_config["max_width"]
+                    )
+                    or (
+                        "max_height" in aug_config
+                        and factor * img.size[1] > aug_config["max_height"]
+                    )
+                    or (
+                        "min_width" in aug_config
+                        and factor * img.size[0] < aug_config["min_width"]
+                    )
+                    or (
+                        "min_height" in aug_config
+                        and factor * img.size[1] < aug_config["min_height"]
+                    )
+                )
+            augmenters.append(
+                DPIAdjusting(factor, preserve_ratio=aug_config["preserve_ratio"])
+            )
+
+        elif aug_config["type"] == "zoom_ratio":
+            ratio_h = rand_uniform(aug_config["min_ratio_h"], aug_config["max_ratio_h"])
+            ratio_w = rand_uniform(aug_config["min_ratio_w"], aug_config["max_ratio_w"])
+            augmenters.append(
+                ZoomRatio(
+                    ratio_h=ratio_h, ratio_w=ratio_w, keep_dim=aug_config["keep_dim"]
+                )
+            )
+
+        elif aug_config["type"] == "perspective":
+            scale = rand_uniform(aug_config["min_factor"], aug_config["max_factor"])
+            augmenters.append(
+                RandomPerspective(
+                    distortion_scale=scale,
+                    p=1,
+                    interpolation=InterpolationMode.BILINEAR,
+                    fill=fill_value,
+                )
+            )
+
+        elif aug_config["type"] == "elastic_distortion":
+            kernel_size = (
+                randint(aug_config["min_kernel_size"], aug_config["max_kernel_size"])
+                // 2
+                * 2
+                + 1
+            )
+            sigma = rand_uniform(aug_config["min_sigma"], aug_config["max_sigma"])
+            alpha = rand_uniform(aug_config["min_alpha"], aug_config["max_alpha"])
+            augmenters.append(
+                ElasticDistortion(
+                    kernel_size=(kernel_size, kernel_size), sigma=sigma, alpha=alpha
+                )
+            )
+
+        elif aug_config["type"] == "dilation_erosion":
+            kernel_h = randint(aug_config["min_kernel"], aug_config["max_kernel"] + 1)
+            kernel_w = randint(aug_config["min_kernel"], aug_config["max_kernel"] + 1)
+            if randint(0, 2) == 0:
+                augmenters.append(
+                    Erosion((kernel_w, kernel_h), aug_config["iterations"])
+                )
+            else:
+                augmenters.append(
+                    Dilation((kernel_w, kernel_h), aug_config["iterations"])
+                )
+
+        elif aug_config["type"] == "color_jittering":
+            augmenters.append(
+                ColorJitter(
+                    contrast=aug_config["factor_contrast"],
+                    brightness=aug_config["factor_brightness"],
+                    saturation=aug_config["factor_saturation"],
+                    hue=aug_config["factor_hue"],
+                )
+            )
+
+        elif aug_config["type"] == "gaussian_blur":
+            max_kernel_h = min(aug_config["max_kernel"], img.size[1])
+            max_kernel_w = min(aug_config["max_kernel"], img.size[0])
+            kernel_h = randint(aug_config["min_kernel"], max_kernel_h + 1) // 2 * 2 + 1
+            kernel_w = randint(aug_config["min_kernel"], max_kernel_w + 1) // 2 * 2 + 1
+            sigma = rand_uniform(aug_config["min_sigma"], aug_config["max_sigma"])
+            augmenters.append(
+                GaussianBlur(kernel_size=(kernel_w, kernel_h), sigma=sigma)
+            )
+
+        elif aug_config["type"] == "gaussian_noise":
+            augmenters.append(GaussianNoise(std=aug_config["std"]))
+
+        elif aug_config["type"] == "sharpen":
+            alpha = rand_uniform(aug_config["min_alpha"], aug_config["max_alpha"])
+            strength = rand_uniform(
+                aug_config["min_strength"], aug_config["max_strength"]
+            )
+            augmenters.append(Sharpen(alpha=alpha, strength=strength))
+
+        else:
+            print("Error - unknown augmentor: {}".format(aug_config["type"]))
+            exit(-1)
+
+    return augmenters
+
+
+def apply_data_augmentation(img, da_config):
+    """
+    Apply data augmentation strategy on input image
+    """
+    applied_da = list()
+    if da_config["proba"] != 1 and rand() > da_config["proba"]:
+        return img, applied_da
+
+    # Convert to PIL Image
+    img = img[:, :, 0] if img.shape[2] == 1 else img
+    img = Image.fromarray(img)
+
+    fill_value = da_config["fill_value"] if "fill_value" in da_config else 255
+    augmenters = get_list_augmenters(
+        img, da_config["augmentations"], fill_value=fill_value
+    )
+    if da_config["order"] == "random":
+        random.shuffle(augmenters)
+
+    for augmenter in augmenters:
+        img = augmenter(img)
+        applied_da.append(type(augmenter).__name__)
+
+    # convert to numpy array
+    img = np.array(img)
+    img = np.expand_dims(img, axis=2) if len(img.shape) == 2 else img
+    return img, applied_da
+
+
+def apply_transform(img, transform):
+    """
+    Apply data augmentation technique on input image
+    """
+    img = img[:, :, 0] if img.shape[2] == 1 else img
+    img = Image.fromarray(img)
+    img = transform(img)
+    img = np.array(img)
+    return np.expand_dims(img, axis=2) if len(img.shape) == 2 else img
+
+
+def line_aug_config(proba_use_da, p):
+    return {
+        "order": "random",
+        "proba": proba_use_da,
+        "augmentations": [
+            {
+                "type": "dpi",
+                "proba": p,
+                "min_factor": 0.5,
+                "max_factor": 1.5,
+                "preserve_ratio": True,
+            },
+            {
+                "type": "perspective",
+                "proba": p,
+                "min_factor": 0,
+                "max_factor": 0.4,
+            },
+            {
+                "type": "elastic_distortion",
+                "proba": p,
+                "min_alpha": 0.5,
+                "max_alpha": 1,
+                "min_sigma": 1,
+                "max_sigma": 10,
+                "min_kernel_size": 3,
+                "max_kernel_size": 9,
+            },
+            {
+                "type": "dilation_erosion",
+                "proba": p,
+                "min_kernel": 1,
+                "max_kernel": 3,
+                "iterations": 1,
+            },
+            {
+                "type": "color_jittering",
+                "proba": p,
+                "factor_hue": 0.2,
+                "factor_brightness": 0.4,
+                "factor_contrast": 0.4,
+                "factor_saturation": 0.4,
+            },
+            {
+                "type": "gaussian_blur",
+                "proba": p,
+                "min_kernel": 3,
+                "max_kernel": 5,
+                "min_sigma": 3,
+                "max_sigma": 5,
+            },
+            {
+                "type": "gaussian_noise",
+                "proba": p,
+                "std": 0.5,
+            },
+            {
+                "type": "sharpen",
+                "proba": p,
+                "min_alpha": 0,
+                "max_alpha": 1,
+                "min_strength": 0,
+                "max_strength": 1,
+            },
+            {
+                "type": "zoom_ratio",
+                "proba": p,
+                "min_ratio_h": 0.8,
+                "max_ratio_h": 1,
+                "min_ratio_w": 0.99,
+                "max_ratio_w": 1,
+                "keep_dim": True,
+            },
+        ],
+    }
+
+
+def aug_config(proba_use_da, p):
+    return {
+        "order": "random",
+        "proba": proba_use_da,
+        "augmentations": [
+            {
+                "type": "dpi",
+                "proba": p,
+                "min_factor": 0.75,
+                "max_factor": 1,
+                "preserve_ratio": True,
+            },
+            {
+                "type": "perspective",
+                "proba": p,
+                "min_factor": 0,
+                "max_factor": 0.4,
+            },
+            {
+                "type": "elastic_distortion",
+                "proba": p,
+                "min_alpha": 0.5,
+                "max_alpha": 1,
+                "min_sigma": 1,
+                "max_sigma": 10,
+                "min_kernel_size": 3,
+                "max_kernel_size": 9,
+            },
+            {
+                "type": "dilation_erosion",
+                "proba": p,
+                "min_kernel": 1,
+                "max_kernel": 3,
+                "iterations": 1,
+            },
+            {
+                "type": "color_jittering",
+                "proba": p,
+                "factor_hue": 0.2,
+                "factor_brightness": 0.4,
+                "factor_contrast": 0.4,
+                "factor_saturation": 0.4,
+            },
+            {
+                "type": "gaussian_blur",
+                "proba": p,
+                "min_kernel": 3,
+                "max_kernel": 5,
+                "min_sigma": 3,
+                "max_sigma": 5,
+            },
+            {
+                "type": "gaussian_noise",
+                "proba": p,
+                "std": 0.5,
+            },
+            {
+                "type": "sharpen",
+                "proba": p,
+                "min_alpha": 0,
+                "max_alpha": 1,
+                "min_strength": 0,
+                "max_strength": 1,
+            },
+        ],
+    }
diff --git a/dan/utils.py b/dan/utils.py
new file mode 100644
index 00000000..3c8ea8f7
--- /dev/null
+++ b/dan/utils.py
@@ -0,0 +1,149 @@
+# -*- coding: utf-8 -*-
+import cv2
+import numpy as np
+import torch
+from torch.distributions.uniform import Uniform
+
+
+def randint(low, high):
+    """
+    call torch.randint to preserve random among dataloader workers
+    """
+    return int(torch.randint(low, high, (1,)))
+
+
+def rand():
+    """
+    call torch.rand to preserve random among dataloader workers
+    """
+    return float(torch.rand((1,)))
+
+
+def rand_uniform(low, high):
+    """
+    call torch uniform to preserve random among dataloader workers
+    """
+    return float(Uniform(low, high).sample())
+
+
+def pad_sequences_1D(data, padding_value):
+    """
+    Pad data with padding_value to get same length
+    """
+    x_lengths = [len(x) for x in data]
+    longest_x = max(x_lengths)
+    padded_data = np.ones((len(data), longest_x)).astype(np.int32) * padding_value
+    for i, x_len in enumerate(x_lengths):
+        padded_data[i, :x_len] = data[i][:x_len]
+    return padded_data
+
+
+def resize_max(img, max_width=None, max_height=None):
+    if max_width is not None and img.shape[1] > max_width:
+        ratio = max_width / img.shape[1]
+        new_h = int(np.floor(ratio * img.shape[0]))
+        new_w = int(np.floor(ratio * img.shape[1]))
+        img = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR)
+    if max_height is not None and img.shape[0] > max_height:
+        ratio = max_height / img.shape[0]
+        new_h = int(np.floor(ratio * img.shape[0]))
+        new_w = int(np.floor(ratio * img.shape[1]))
+        img = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR)
+    return img
+
+
+def pad_images(data, padding_value, padding_mode="br"):
+    """
+    data: list of numpy array
+    mode: "br"/"tl"/"random" (bottom-right, top-left, random)
+    """
+    x_lengths = [x.shape[0] for x in data]
+    y_lengths = [x.shape[1] for x in data]
+    longest_x = max(x_lengths)
+    longest_y = max(y_lengths)
+    padded_data = (
+        np.ones((len(data), longest_x, longest_y, data[0].shape[2])) * padding_value
+    )
+    for i, xy_len in enumerate(zip(x_lengths, y_lengths)):
+        x_len, y_len = xy_len
+        if padding_mode == "br":
+            padded_data[i, :x_len, :y_len, ...] = data[i]
+        elif padding_mode == "tl":
+            padded_data[i, -x_len:, -y_len:, ...] = data[i]
+        elif padding_mode == "random":
+            xmax = longest_x - x_len
+            ymax = longest_y - y_len
+            xi = randint(0, xmax) if xmax >= 1 else 0
+            yi = randint(0, ymax) if ymax >= 1 else 0
+            padded_data[i, xi : xi + x_len, yi : yi + y_len, ...] = data[i]
+        else:
+            raise NotImplementedError("Undefined padding mode: {}".format(padding_mode))
+    return padded_data
+
+
+def pad_image(
+    image,
+    padding_value,
+    new_height=None,
+    new_width=None,
+    pad_width=None,
+    pad_height=None,
+    padding_mode="br",
+    return_position=False,
+):
+    """
+    data: list of numpy array
+    mode: "br"/"tl"/"random" (bottom-right, top-left, random)
+    """
+    if pad_width is not None and new_width is not None:
+        raise NotImplementedError("pad_with and new_width are not compatible")
+    if pad_height is not None and new_height is not None:
+        raise NotImplementedError("pad_height and new_height are not compatible")
+
+    h, w, c = image.shape
+    pad_width = (
+        pad_width
+        if pad_width is not None
+        else max(0, new_width - w)
+        if new_width is not None
+        else 0
+    )
+    pad_height = (
+        pad_height
+        if pad_height is not None
+        else max(0, new_height - h)
+        if new_height is not None
+        else 0
+    )
+
+    if not (pad_width == 0 and pad_height == 0):
+        padded_image = np.ones((h + pad_height, w + pad_width, c)) * padding_value
+        if padding_mode == "br":
+            hi, wi = 0, 0
+        elif padding_mode == "tl":
+            hi, wi = pad_height, pad_width
+        elif padding_mode == "random":
+            hi = randint(0, pad_height) if pad_height >= 1 else 0
+            wi = randint(0, pad_width) if pad_width >= 1 else 0
+        else:
+            raise NotImplementedError("Undefined padding mode: {}".format(padding_mode))
+        padded_image[hi : hi + h, wi : wi + w, ...] = image
+        output = padded_image
+    else:
+        hi, wi = 0, 0
+        output = image
+
+    if return_position:
+        return output, [[hi, hi + h], [wi, wi + w]]
+    return output
+
+
+def pad_image_width_right(img, new_width, padding_value):
+    """
+    Pad img to right side with padding value to reach new_width as width
+    """
+    h, w, c = img.shape
+    pad_width = max((new_width - w), 0)
+    pad_right = np.ones((h, pad_width, c), dtype=img.dtype) * padding_value
+    img = np.concatenate([img, pad_right], axis=1)
+    return img
diff --git a/images/visual.png b/images/visual.png
new file mode 100644
index 0000000000000000000000000000000000000000..e228e7924cb2760dc61636651b525ef5359408c5
GIT binary patch
literal 134135
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
a_T^Qa=cNaU{##!p#G$IFr2u+w74|=%6YoF(

literal 0
HcmV?d00001

diff --git a/images/visual_slanted_lines.png b/images/visual_slanted_lines.png
new file mode 100644
index 0000000000000000000000000000000000000000..478af3ac1eb40316bbb1f0e7400f592b0d31ec70
GIT binary patch
literal 213318
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%0AokjbT0)@mm8(9SVfd5aCWuCzw#6gK%or
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%0Dfr9r<)k8JJc;8Dk_m5>&EaN{oOab
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

literal 0
HcmV?d00001

-- 
GitLab