scanlayer 1.0.2__tar.gz → 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scanlayer-1.0.2/scanlayer.egg-info → scanlayer-1.0.3}/PKG-INFO +25 -27
- {scanlayer-1.0.2 → scanlayer-1.0.3}/README.md +23 -26
- {scanlayer-1.0.2 → scanlayer-1.0.3}/pyproject.toml +2 -2
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/pdf/fonts.py +4 -1
- {scanlayer-1.0.2 → scanlayer-1.0.3/scanlayer.egg-info}/PKG-INFO +25 -27
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer.egg-info/requires.txt +1 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/LICENSE.md +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/__init__.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/__main__.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/cli/__init__.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/cli/dry_run.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/cli/parser.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/cli/run.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/config.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/fonts/DejaVuSans.ttf +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/layout/__init__.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/layout/columns.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/main.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/ocr/__init__.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/ocr/engine.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/ocr/export.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/pdf/__init__.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/pdf/builder.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/preprocessing/__init__.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/preprocessing/enhance.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/utils/__init__.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/utils/debug_image.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/utils/errors.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/utils/logger.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer/utils/validators.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer.egg-info/SOURCES.txt +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer.egg-info/dependency_links.txt +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer.egg-info/entry_points.txt +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/scanlayer.egg-info/top_level.txt +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/setup.cfg +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/tests/test_columns.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/tests/test_config.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/tests/test_dry_run.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/tests/test_export.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/tests/test_fonts.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/tests/test_main_integration.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/tests/test_pdf_builder.py +0 -0
- {scanlayer-1.0.2 → scanlayer-1.0.3}/tests/test_validators.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scanlayer
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Image (scan/photo) to searchable PDF, or raw OCR export, via Tesseract.
|
|
5
5
|
Author: Hyacinthe-primus
|
|
6
6
|
Author-email: Hyacinthe-primus <hyacintheatho91@gmail.com>
|
|
@@ -19,6 +19,7 @@ Requires-Dist: numpy>=1.24.0
|
|
|
19
19
|
Requires-Dist: pdf2image>=1.17.0
|
|
20
20
|
Provides-Extra: test
|
|
21
21
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
22
|
+
Requires-Dist: pytest-cov>=4.1; extra == "test"
|
|
22
23
|
Provides-Extra: yaml
|
|
23
24
|
Requires-Dist: PyYAML>=6.0; extra == "yaml"
|
|
24
25
|
Dynamic: license-file
|
|
@@ -26,20 +27,27 @@ Dynamic: license-file
|
|
|
26
27
|
<div align="center">
|
|
27
28
|
<img src="scanlayer.png" alt="scanlayer" width="110"/>
|
|
28
29
|
<h1>scanlayer</h1>
|
|
29
|
-
<p><em>
|
|
30
|
+
<p><em> Turn scanned image or photographed document into searchable PDF, or raw OCR text/JSON/TSV/hOCR.</em></p>
|
|
30
31
|
</div>
|
|
31
32
|
|
|
32
33
|
**Turn a scanned image or photographed document into a searchable PDF**, or
|
|
33
34
|
export the raw OCR result as plain text, JSON, TSV, or hOCR. Use it as a
|
|
34
35
|
command-line tool or as a Python library; both are the same engine underneath.
|
|
35
36
|
|
|
36
|
-
[](https://badge.fury.io/py/scanlayer)
|
|
38
|
+
[](https://codecov.io/gh/Hyacinthe-primus/scanlayer)
|
|
39
|
+
[](#)
|
|
37
40
|

|
|
38
41
|
[](https://Hyacinthe-primus.github.io/scanlayer/)
|
|
42
|
+
[](https://github.com/Hyacinthe-primus/scanlayer)
|
|
39
43
|
[](LICENSE.md)
|
|
40
44
|
|
|
41
45
|
---
|
|
42
46
|
|
|
47
|
+
## Documentation
|
|
48
|
+
|
|
49
|
+
[Full documentation](https://Hyacinthe-primus.github.io/scanlayer/) – installation, CLI & API reference, configuration, output formats, examples, and troubleshooting.
|
|
50
|
+
|
|
43
51
|
## What it does
|
|
44
52
|
|
|
45
53
|
A scanned invoice, a phone photo of a letter, a stack of photographed pages:
|
|
@@ -172,28 +180,6 @@ scanlayer.convert_merge(["page1.jpg", "page2.jpg", "page3.jpg"], "report.pdf")
|
|
|
172
180
|
scanlayer.convert("invoice.jpg", "invoice.json", output_format="json")
|
|
173
181
|
```
|
|
174
182
|
|
|
175
|
-
## Documentation
|
|
176
|
-
|
|
177
|
-
| | |
|
|
178
|
-
|---|---|
|
|
179
|
-
| **[Installation](https://Hyacinthe-primus.github.io/scanlayer/installation.html)** | Tesseract, poppler, and the two ways to install scanlayer itself |
|
|
180
|
-
| **[Examples](https://Hyacinthe-primus.github.io/scanlayer/examples.html)** | Every feature, CLI and library side by side |
|
|
181
|
-
| **[CLI Reference](https://Hyacinthe-primus.github.io/scanlayer/cli-reference.html)** | Every flag and exit code |
|
|
182
|
-
| **[Library API](https://Hyacinthe-primus.github.io/scanlayer/library-api.html)** | `convert()`, `convert_batch()`, `convert_merge()`, exceptions, and the full low-level pipeline API |
|
|
183
|
-
| **[Feature Catalog](https://Hyacinthe-primus.github.io/scanlayer/features.html)** | Everything scanlayer does, by pipeline stage |
|
|
184
|
-
| **[Configuration](https://Hyacinthe-primus.github.io/scanlayer/configuration.html)** | `configure()`, config files, precedence, every tunable |
|
|
185
|
-
| **[Output Formats](https://Hyacinthe-primus.github.io/scanlayer/output-formats.html)** | The `pdf`/`txt`/`json`/`tsv`/`hocr` schemas |
|
|
186
|
-
| **[Multi-Page & Merge](https://Hyacinthe-primus.github.io/scanlayer/multi-page-merge.html)** | Batching, merging, native PDF input |
|
|
187
|
-
| **[Debug Visualization](https://Hyacinthe-primus.github.io/scanlayer/debug-visualization.html)** | Reading the `--debug-image` confidence overlay |
|
|
188
|
-
| **[Bundling Tesseract](https://Hyacinthe-primus.github.io/scanlayer/bundling-tesseract.html)** | Shipping your own Tesseract binary |
|
|
189
|
-
| **[Troubleshooting](https://Hyacinthe-primus.github.io/scanlayer/troubleshooting.html)** | Common errors and fixes |
|
|
190
|
-
| **[Roadmap & Limitations](https://Hyacinthe-primus.github.io/scanlayer/roadmap.html)** | What's missing and what's deliberately out of scope |
|
|
191
|
-
|
|
192
|
-
The site is published from the `gh-pages` branch at
|
|
193
|
-
https://Hyacinthe-primus.github.io/scanlayer/. To browse it locally, open
|
|
194
|
-
`index.html` in a `gh-pages` worktree (e.g. `git worktree add <path> gh-pages`);
|
|
195
|
-
it has no build step or server-side dependency.
|
|
196
|
-
|
|
197
183
|
## Repository layout
|
|
198
184
|
|
|
199
185
|
```
|
|
@@ -226,8 +212,20 @@ Bug reports, fixes, and feature discussions are welcome: see
|
|
|
226
212
|
[CONTRIBUTING.md](CONTRIBUTING.md) for how to set up a development
|
|
227
213
|
environment and what to include in a pull request. There is a `tests/`
|
|
228
214
|
directory (now including `utils/validators.py` and the `--dry-run` flag, with
|
|
229
|
-
cross-platform coverage for Tesseract discovery on Windows/macOS/Linux) and it runs with `pytest
|
|
215
|
+
cross-platform coverage for Tesseract discovery on Windows/macOS/Linux) and it runs with `pytest` automatically in CI on every push and pull request; see [Roadmap & Limitations](https://Hyacinthe-primus.github.io/scanlayer/roadmap.html) and the [Adding tests](CONTRIBUTING.md#adding-tests) section of the contributing guide for where coverage is thinnest.
|
|
216
|
+
|
|
217
|
+
## Support the project
|
|
218
|
+
|
|
219
|
+
scanlayer is free and MIT-licensed, maintained in spare time. If it saves you
|
|
220
|
+
time, there is no fee – but a little support goes a long way:
|
|
221
|
+
|
|
222
|
+
- **Star the repository** – the simplest signal that the project is worth
|
|
223
|
+
maintaining.
|
|
224
|
+
- **Report bugs or request features** by opening a
|
|
225
|
+
[GitHub Issue](https://github.com/Hyacinthe-primus/scanlayer/issues).
|
|
226
|
+
- **Contribute** a fix, test, or example – see
|
|
227
|
+
[CONTRIBUTING.md](CONTRIBUTING.md).
|
|
230
228
|
|
|
231
229
|
## License
|
|
232
230
|
|
|
233
|
-
[MIT](LICENSE.md).
|
|
231
|
+
This project is licensed under the [MIT License](LICENSE.md).
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<img src="scanlayer.png" alt="scanlayer" width="110"/>
|
|
3
3
|
<h1>scanlayer</h1>
|
|
4
|
-
<p><em>
|
|
4
|
+
<p><em> Turn scanned image or photographed document into searchable PDF, or raw OCR text/JSON/TSV/hOCR.</em></p>
|
|
5
5
|
</div>
|
|
6
6
|
|
|
7
7
|
**Turn a scanned image or photographed document into a searchable PDF**, or
|
|
8
8
|
export the raw OCR result as plain text, JSON, TSV, or hOCR. Use it as a
|
|
9
9
|
command-line tool or as a Python library; both are the same engine underneath.
|
|
10
10
|
|
|
11
|
-
[](https://badge.fury.io/py/scanlayer)
|
|
12
|
+
[](https://codecov.io/gh/Hyacinthe-primus/scanlayer)
|
|
13
|
+
[](#)
|
|
12
14
|

|
|
13
15
|
[](https://Hyacinthe-primus.github.io/scanlayer/)
|
|
16
|
+
[](https://github.com/Hyacinthe-primus/scanlayer)
|
|
14
17
|
[](LICENSE.md)
|
|
15
18
|
|
|
16
19
|
---
|
|
17
20
|
|
|
21
|
+
## Documentation
|
|
22
|
+
|
|
23
|
+
[Full documentation](https://Hyacinthe-primus.github.io/scanlayer/) – installation, CLI & API reference, configuration, output formats, examples, and troubleshooting.
|
|
24
|
+
|
|
18
25
|
## What it does
|
|
19
26
|
|
|
20
27
|
A scanned invoice, a phone photo of a letter, a stack of photographed pages:
|
|
@@ -147,28 +154,6 @@ scanlayer.convert_merge(["page1.jpg", "page2.jpg", "page3.jpg"], "report.pdf")
|
|
|
147
154
|
scanlayer.convert("invoice.jpg", "invoice.json", output_format="json")
|
|
148
155
|
```
|
|
149
156
|
|
|
150
|
-
## Documentation
|
|
151
|
-
|
|
152
|
-
| | |
|
|
153
|
-
|---|---|
|
|
154
|
-
| **[Installation](https://Hyacinthe-primus.github.io/scanlayer/installation.html)** | Tesseract, poppler, and the two ways to install scanlayer itself |
|
|
155
|
-
| **[Examples](https://Hyacinthe-primus.github.io/scanlayer/examples.html)** | Every feature, CLI and library side by side |
|
|
156
|
-
| **[CLI Reference](https://Hyacinthe-primus.github.io/scanlayer/cli-reference.html)** | Every flag and exit code |
|
|
157
|
-
| **[Library API](https://Hyacinthe-primus.github.io/scanlayer/library-api.html)** | `convert()`, `convert_batch()`, `convert_merge()`, exceptions, and the full low-level pipeline API |
|
|
158
|
-
| **[Feature Catalog](https://Hyacinthe-primus.github.io/scanlayer/features.html)** | Everything scanlayer does, by pipeline stage |
|
|
159
|
-
| **[Configuration](https://Hyacinthe-primus.github.io/scanlayer/configuration.html)** | `configure()`, config files, precedence, every tunable |
|
|
160
|
-
| **[Output Formats](https://Hyacinthe-primus.github.io/scanlayer/output-formats.html)** | The `pdf`/`txt`/`json`/`tsv`/`hocr` schemas |
|
|
161
|
-
| **[Multi-Page & Merge](https://Hyacinthe-primus.github.io/scanlayer/multi-page-merge.html)** | Batching, merging, native PDF input |
|
|
162
|
-
| **[Debug Visualization](https://Hyacinthe-primus.github.io/scanlayer/debug-visualization.html)** | Reading the `--debug-image` confidence overlay |
|
|
163
|
-
| **[Bundling Tesseract](https://Hyacinthe-primus.github.io/scanlayer/bundling-tesseract.html)** | Shipping your own Tesseract binary |
|
|
164
|
-
| **[Troubleshooting](https://Hyacinthe-primus.github.io/scanlayer/troubleshooting.html)** | Common errors and fixes |
|
|
165
|
-
| **[Roadmap & Limitations](https://Hyacinthe-primus.github.io/scanlayer/roadmap.html)** | What's missing and what's deliberately out of scope |
|
|
166
|
-
|
|
167
|
-
The site is published from the `gh-pages` branch at
|
|
168
|
-
https://Hyacinthe-primus.github.io/scanlayer/. To browse it locally, open
|
|
169
|
-
`index.html` in a `gh-pages` worktree (e.g. `git worktree add <path> gh-pages`);
|
|
170
|
-
it has no build step or server-side dependency.
|
|
171
|
-
|
|
172
157
|
## Repository layout
|
|
173
158
|
|
|
174
159
|
```
|
|
@@ -201,8 +186,20 @@ Bug reports, fixes, and feature discussions are welcome: see
|
|
|
201
186
|
[CONTRIBUTING.md](CONTRIBUTING.md) for how to set up a development
|
|
202
187
|
environment and what to include in a pull request. There is a `tests/`
|
|
203
188
|
directory (now including `utils/validators.py` and the `--dry-run` flag, with
|
|
204
|
-
cross-platform coverage for Tesseract discovery on Windows/macOS/Linux) and it runs with `pytest
|
|
189
|
+
cross-platform coverage for Tesseract discovery on Windows/macOS/Linux) and it runs with `pytest` automatically in CI on every push and pull request; see [Roadmap & Limitations](https://Hyacinthe-primus.github.io/scanlayer/roadmap.html) and the [Adding tests](CONTRIBUTING.md#adding-tests) section of the contributing guide for where coverage is thinnest.
|
|
190
|
+
|
|
191
|
+
## Support the project
|
|
192
|
+
|
|
193
|
+
scanlayer is free and MIT-licensed, maintained in spare time. If it saves you
|
|
194
|
+
time, there is no fee – but a little support goes a long way:
|
|
195
|
+
|
|
196
|
+
- **Star the repository** – the simplest signal that the project is worth
|
|
197
|
+
maintaining.
|
|
198
|
+
- **Report bugs or request features** by opening a
|
|
199
|
+
[GitHub Issue](https://github.com/Hyacinthe-primus/scanlayer/issues).
|
|
200
|
+
- **Contribute** a fix, test, or example – see
|
|
201
|
+
[CONTRIBUTING.md](CONTRIBUTING.md).
|
|
205
202
|
|
|
206
203
|
## License
|
|
207
204
|
|
|
208
|
-
[MIT](LICENSE.md).
|
|
205
|
+
This project is licensed under the [MIT License](LICENSE.md).
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "scanlayer"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.3"
|
|
8
8
|
description = "Image (scan/photo) to searchable PDF, or raw OCR export, via Tesseract."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -23,7 +23,7 @@ dependencies = [
|
|
|
23
23
|
]
|
|
24
24
|
|
|
25
25
|
[project.optional-dependencies]
|
|
26
|
-
test = ["pytest>=7.0"]
|
|
26
|
+
test = ["pytest>=7.0", "pytest-cov>=4.1"]
|
|
27
27
|
yaml = ["PyYAML>=6.0"]
|
|
28
28
|
|
|
29
29
|
[project.scripts]
|
|
@@ -12,6 +12,7 @@ Set config.FONT_PATH to force a specific TTF and skip auto-selection.
|
|
|
12
12
|
from __future__ import annotations
|
|
13
13
|
|
|
14
14
|
import os
|
|
15
|
+
import sys
|
|
15
16
|
|
|
16
17
|
from reportlab.pdfbase import pdfmetrics
|
|
17
18
|
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
|
|
@@ -25,7 +26,9 @@ log = get_logger(__name__)
|
|
|
25
26
|
FALLBACK_FONT = "Helvetica"
|
|
26
27
|
|
|
27
28
|
_UNICODE_TTF_NAME = "ScanlayerUnicode"
|
|
28
|
-
|
|
29
|
+
_scanlayer_root = os.path.dirname(os.path.dirname(__file__))
|
|
30
|
+
_bundle_root = getattr(sys, "_MEIPASS", os.path.dirname(_scanlayer_root))
|
|
31
|
+
_UNICODE_TTF_PATH = os.path.join(_bundle_root, "scanlayer", "fonts", "DejaVuSans.ttf")
|
|
29
32
|
|
|
30
33
|
_CUSTOM_TTF_NAME = "ScanlayerCustom"
|
|
31
34
|
_custom_registered_path: str | None = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scanlayer
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Image (scan/photo) to searchable PDF, or raw OCR export, via Tesseract.
|
|
5
5
|
Author: Hyacinthe-primus
|
|
6
6
|
Author-email: Hyacinthe-primus <hyacintheatho91@gmail.com>
|
|
@@ -19,6 +19,7 @@ Requires-Dist: numpy>=1.24.0
|
|
|
19
19
|
Requires-Dist: pdf2image>=1.17.0
|
|
20
20
|
Provides-Extra: test
|
|
21
21
|
Requires-Dist: pytest>=7.0; extra == "test"
|
|
22
|
+
Requires-Dist: pytest-cov>=4.1; extra == "test"
|
|
22
23
|
Provides-Extra: yaml
|
|
23
24
|
Requires-Dist: PyYAML>=6.0; extra == "yaml"
|
|
24
25
|
Dynamic: license-file
|
|
@@ -26,20 +27,27 @@ Dynamic: license-file
|
|
|
26
27
|
<div align="center">
|
|
27
28
|
<img src="scanlayer.png" alt="scanlayer" width="110"/>
|
|
28
29
|
<h1>scanlayer</h1>
|
|
29
|
-
<p><em>
|
|
30
|
+
<p><em> Turn scanned image or photographed document into searchable PDF, or raw OCR text/JSON/TSV/hOCR.</em></p>
|
|
30
31
|
</div>
|
|
31
32
|
|
|
32
33
|
**Turn a scanned image or photographed document into a searchable PDF**, or
|
|
33
34
|
export the raw OCR result as plain text, JSON, TSV, or hOCR. Use it as a
|
|
34
35
|
command-line tool or as a Python library; both are the same engine underneath.
|
|
35
36
|
|
|
36
|
-
[](https://badge.fury.io/py/scanlayer)
|
|
38
|
+
[](https://codecov.io/gh/Hyacinthe-primus/scanlayer)
|
|
39
|
+
[](#)
|
|
37
40
|

|
|
38
41
|
[](https://Hyacinthe-primus.github.io/scanlayer/)
|
|
42
|
+
[](https://github.com/Hyacinthe-primus/scanlayer)
|
|
39
43
|
[](LICENSE.md)
|
|
40
44
|
|
|
41
45
|
---
|
|
42
46
|
|
|
47
|
+
## Documentation
|
|
48
|
+
|
|
49
|
+
[Full documentation](https://Hyacinthe-primus.github.io/scanlayer/) – installation, CLI & API reference, configuration, output formats, examples, and troubleshooting.
|
|
50
|
+
|
|
43
51
|
## What it does
|
|
44
52
|
|
|
45
53
|
A scanned invoice, a phone photo of a letter, a stack of photographed pages:
|
|
@@ -172,28 +180,6 @@ scanlayer.convert_merge(["page1.jpg", "page2.jpg", "page3.jpg"], "report.pdf")
|
|
|
172
180
|
scanlayer.convert("invoice.jpg", "invoice.json", output_format="json")
|
|
173
181
|
```
|
|
174
182
|
|
|
175
|
-
## Documentation
|
|
176
|
-
|
|
177
|
-
| | |
|
|
178
|
-
|---|---|
|
|
179
|
-
| **[Installation](https://Hyacinthe-primus.github.io/scanlayer/installation.html)** | Tesseract, poppler, and the two ways to install scanlayer itself |
|
|
180
|
-
| **[Examples](https://Hyacinthe-primus.github.io/scanlayer/examples.html)** | Every feature, CLI and library side by side |
|
|
181
|
-
| **[CLI Reference](https://Hyacinthe-primus.github.io/scanlayer/cli-reference.html)** | Every flag and exit code |
|
|
182
|
-
| **[Library API](https://Hyacinthe-primus.github.io/scanlayer/library-api.html)** | `convert()`, `convert_batch()`, `convert_merge()`, exceptions, and the full low-level pipeline API |
|
|
183
|
-
| **[Feature Catalog](https://Hyacinthe-primus.github.io/scanlayer/features.html)** | Everything scanlayer does, by pipeline stage |
|
|
184
|
-
| **[Configuration](https://Hyacinthe-primus.github.io/scanlayer/configuration.html)** | `configure()`, config files, precedence, every tunable |
|
|
185
|
-
| **[Output Formats](https://Hyacinthe-primus.github.io/scanlayer/output-formats.html)** | The `pdf`/`txt`/`json`/`tsv`/`hocr` schemas |
|
|
186
|
-
| **[Multi-Page & Merge](https://Hyacinthe-primus.github.io/scanlayer/multi-page-merge.html)** | Batching, merging, native PDF input |
|
|
187
|
-
| **[Debug Visualization](https://Hyacinthe-primus.github.io/scanlayer/debug-visualization.html)** | Reading the `--debug-image` confidence overlay |
|
|
188
|
-
| **[Bundling Tesseract](https://Hyacinthe-primus.github.io/scanlayer/bundling-tesseract.html)** | Shipping your own Tesseract binary |
|
|
189
|
-
| **[Troubleshooting](https://Hyacinthe-primus.github.io/scanlayer/troubleshooting.html)** | Common errors and fixes |
|
|
190
|
-
| **[Roadmap & Limitations](https://Hyacinthe-primus.github.io/scanlayer/roadmap.html)** | What's missing and what's deliberately out of scope |
|
|
191
|
-
|
|
192
|
-
The site is published from the `gh-pages` branch at
|
|
193
|
-
https://Hyacinthe-primus.github.io/scanlayer/. To browse it locally, open
|
|
194
|
-
`index.html` in a `gh-pages` worktree (e.g. `git worktree add <path> gh-pages`);
|
|
195
|
-
it has no build step or server-side dependency.
|
|
196
|
-
|
|
197
183
|
## Repository layout
|
|
198
184
|
|
|
199
185
|
```
|
|
@@ -226,8 +212,20 @@ Bug reports, fixes, and feature discussions are welcome: see
|
|
|
226
212
|
[CONTRIBUTING.md](CONTRIBUTING.md) for how to set up a development
|
|
227
213
|
environment and what to include in a pull request. There is a `tests/`
|
|
228
214
|
directory (now including `utils/validators.py` and the `--dry-run` flag, with
|
|
229
|
-
cross-platform coverage for Tesseract discovery on Windows/macOS/Linux) and it runs with `pytest
|
|
215
|
+
cross-platform coverage for Tesseract discovery on Windows/macOS/Linux) and it runs with `pytest` automatically in CI on every push and pull request; see [Roadmap & Limitations](https://Hyacinthe-primus.github.io/scanlayer/roadmap.html) and the [Adding tests](CONTRIBUTING.md#adding-tests) section of the contributing guide for where coverage is thinnest.
|
|
216
|
+
|
|
217
|
+
## Support the project
|
|
218
|
+
|
|
219
|
+
scanlayer is free and MIT-licensed, maintained in spare time. If it saves you
|
|
220
|
+
time, there is no fee – but a little support goes a long way:
|
|
221
|
+
|
|
222
|
+
- **Star the repository** – the simplest signal that the project is worth
|
|
223
|
+
maintaining.
|
|
224
|
+
- **Report bugs or request features** by opening a
|
|
225
|
+
[GitHub Issue](https://github.com/Hyacinthe-primus/scanlayer/issues).
|
|
226
|
+
- **Contribute** a fix, test, or example – see
|
|
227
|
+
[CONTRIBUTING.md](CONTRIBUTING.md).
|
|
230
228
|
|
|
231
229
|
## License
|
|
232
230
|
|
|
233
|
-
[MIT](LICENSE.md).
|
|
231
|
+
This project is licensed under the [MIT License](LICENSE.md).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|