# DAN: a Segmentation-free Document Attention Network for Handwritten Document Recognition
[![Python >= 3.10](https://img.shields.io/badge/Python-%3E%3D3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)
For more details about this package, make sure to see the documentation available at <https://atr.pages.teklia.com/dan/>.
This is an open-source project, licensed using [the CeCILL-C license](https://cecill.info/index.en.html).
## Inference
To apply DAN to an image, one needs to first add a few imports and to load an image. Note that the image should be in RGB.
```python
import cv2
from dan.ocr.predict.inference import DAN
image = cv2.cvtColor(cv2.imread(IMAGE_PATH), cv2.COLOR_BGR2RGB)
```
Then one can initialize and load the trained model with the parameters used during training. The directory passed as parameter should have:
- a `model.pt` file,
- a `charset.pkl` file,
- a `parameters.yml` file corresponding to the `inference_parameters.yml` file generated during training.
```python
from pathlib import Path
model_path = Path("models")
model = DAN("cpu")
model.load(model_path, mode="eval")
```
To run the inference on a GPU, one can replace `cpu` by the name of the GPU. In the end, one can run the prediction:
```python
from pathlib import Path
from dan.utils import parse_charset_pattern
# Load image
image_path = "images/page.jpg"
_, image = dan_model.preprocess(str(image_path))
input_tensor = image.unsqueeze(0)
input_tensor = input_tensor.to("cpu")
input_sizes = [image.shape[1:]]
# Predict
text, confidence_scores = model.predict(
input_tensor,
input_sizes,
char_separators=parse_charset_pattern(dan_model.charset),
confidences=True,
)
```
## Training
This package provides three subcommands. To get more information about any subcommand, use the `--help` option.
### Get started
See the [dedicated page](https://atr.pages.teklia.com/dan/get_started/training/) on the official DAN documentation.
### Data extraction from Arkindex
See the [dedicated page](https://atr.pages.teklia.com/dan/usage/datasets/extract/) on the official DAN documentation.
### Model training
See the [dedicated page](https://atr.pages.teklia.com/dan/usage/train/) on the official DAN documentation.
### Model prediction
See the [dedicated page](https://atr.pages.teklia.com/dan/usage/predict/) on the official DAN documentation.
Raw data
{
"_id": null,
"home_page": null,
"name": "atr-dan",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "python, HTR, OCR, NER, machine learning, pytorch",
"author": null,
"author_email": "Teklia <contact@teklia.com>",
"download_url": "https://files.pythonhosted.org/packages/97/0a/19b82383fb6a2734a4c8aa869490c17b5f4d5dc5c486f17299170702d216/atr_dan-0.2.0rc12.tar.gz",
"platform": null,
"description": "# DAN: a Segmentation-free Document Attention Network for Handwritten Document Recognition\n\n[![Python >= 3.10](https://img.shields.io/badge/Python-%3E%3D3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)\n\nFor more details about this package, make sure to see the documentation available at <https://atr.pages.teklia.com/dan/>.\n\nThis is an open-source project, licensed using [the CeCILL-C license](https://cecill.info/index.en.html).\n\n## Inference\n\nTo apply DAN to an image, one needs to first add a few imports and to load an image. Note that the image should be in RGB.\n\n```python\nimport cv2\nfrom dan.ocr.predict.inference import DAN\n\nimage = cv2.cvtColor(cv2.imread(IMAGE_PATH), cv2.COLOR_BGR2RGB)\n```\n\nThen one can initialize and load the trained model with the parameters used during training. The directory passed as parameter should have:\n\n- a `model.pt` file,\n- a `charset.pkl` file,\n- a `parameters.yml` file corresponding to the `inference_parameters.yml` file generated during training.\n\n```python\nfrom pathlib import Path\n\nmodel_path = Path(\"models\")\n\nmodel = DAN(\"cpu\")\nmodel.load(model_path, mode=\"eval\")\n```\n\nTo run the inference on a GPU, one can replace `cpu` by the name of the GPU. In the end, one can run the prediction:\n\n```python\nfrom pathlib import Path\nfrom dan.utils import parse_charset_pattern\n\n# Load image\nimage_path = \"images/page.jpg\"\n_, image = dan_model.preprocess(str(image_path))\n\ninput_tensor = image.unsqueeze(0)\ninput_tensor = input_tensor.to(\"cpu\")\ninput_sizes = [image.shape[1:]]\n\n# Predict\ntext, confidence_scores = model.predict(\n input_tensor,\n input_sizes,\n char_separators=parse_charset_pattern(dan_model.charset),\n confidences=True,\n)\n```\n\n## Training\n\nThis package provides three subcommands. To get more information about any subcommand, use the `--help` option.\n\n### Get started\n\nSee the [dedicated page](https://atr.pages.teklia.com/dan/get_started/training/) on the official DAN documentation.\n\n### Data extraction from Arkindex\n\nSee the [dedicated page](https://atr.pages.teklia.com/dan/usage/datasets/extract/) on the official DAN documentation.\n\n### Model training\n\nSee the [dedicated page](https://atr.pages.teklia.com/dan/usage/train/) on the official DAN documentation.\n\n### Model prediction\n\nSee the [dedicated page](https://atr.pages.teklia.com/dan/usage/predict/) on the official DAN documentation.\n",
"bugtrack_url": null,
"license": null,
"summary": "Teklia DAN",
"version": "0.2.0rc12",
"project_urls": {
"Bug Tracker": "https://gitlab.teklia.com/atr/dan/issues",
"Documentation": "https://atr.pages.teklia/dan/",
"Homepage": "https://atr.pages.teklia/dan/",
"Maintainers": "https://teklia.com",
"Repository": "https://gitlab.teklia.com/atr/dan"
},
"split_keywords": [
"python",
" htr",
" ocr",
" ner",
" machine learning",
" pytorch"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "402e1c51ea063fbbf6ac39f1309a80fdb981c592e3cb3e6f0c9b63bc67854c0a",
"md5": "f61cad605f9f071598958b216d942bd8",
"sha256": "9210a15e89e97724d4b736eef7f23aeb0d26153d1b124becfa8b5e1112998c92"
},
"downloads": -1,
"filename": "atr_dan-0.2.0rc12-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f61cad605f9f071598958b216d942bd8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 127003,
"upload_time": "2024-12-12T11:25:26",
"upload_time_iso_8601": "2024-12-12T11:25:26.656223Z",
"url": "https://files.pythonhosted.org/packages/40/2e/1c51ea063fbbf6ac39f1309a80fdb981c592e3cb3e6f0c9b63bc67854c0a/atr_dan-0.2.0rc12-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "970a19b82383fb6a2734a4c8aa869490c17b5f4d5dc5c486f17299170702d216",
"md5": "02191b4d98e7b096144c2a5af96b95c3",
"sha256": "1724469106d2a90f025a396cbe404e66a01d812fbd7b59536b26e525f6f20e33"
},
"downloads": -1,
"filename": "atr_dan-0.2.0rc12.tar.gz",
"has_sig": false,
"md5_digest": "02191b4d98e7b096144c2a5af96b95c3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 103233,
"upload_time": "2024-12-12T11:25:30",
"upload_time_iso_8601": "2024-12-12T11:25:30.406310Z",
"url": "https://files.pythonhosted.org/packages/97/0a/19b82383fb6a2734a4c8aa869490c17b5f4d5dc5c486f17299170702d216/atr_dan-0.2.0rc12.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-12 11:25:30",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "atr-dan"
}