├── .github └── workflows │ ├── CI.yml │ ├── deploy.yml │ └── test.yml ├── .gitignore ├── .just ├── commit.just ├── hooks.just ├── ship.just └── test.just ├── .pre-commit-config.yaml ├── CHANGELOG.md ├── Justfile ├── LICENSE ├── README.md ├── derive_cubic.py ├── docs ├── api │ ├── check_version.md │ ├── cli.md │ ├── colours.md │ ├── contours.md │ ├── core.md │ ├── dewarp.md │ ├── image.md │ ├── index.md │ ├── k_opt.md │ ├── keypoints.md │ ├── mask.md │ ├── normalisation.md │ ├── optimise.md │ ├── options.md │ ├── projection.md │ ├── simple_utils.md │ ├── snoopy.md │ ├── solve.md │ ├── spans.md │ └── viewer.md ├── changelog.md ├── get_started.md ├── how-it-works │ ├── Assemble-text-into-spans.md │ ├── Background-on-image-moments.md │ ├── Create-naïve-parameter-estimate.md │ ├── Detect-text-contours.md │ ├── Introduction.md │ ├── Obtain-page-boundaries.md │ ├── Optimise-to-minimise-reprojection-error.md │ ├── Remap-image-and-threshold.md │ └── Sample-spans.md ├── index.md ├── theme │ ├── .gitkeep │ ├── js │ │ └── katex.js │ └── stylesheets │ │ └── extra.css └── vercel │ ├── build.sh │ └── deploy.sh ├── example_input ├── boston_cooking_a.jpg ├── boston_cooking_b.jpg ├── finnish_cooking_a.jpg ├── linguistics_thesis_a.jpg └── linguistics_thesis_b.jpg ├── example_output ├── boston_cooking_a_thresh.png ├── boston_cooking_b_thresh.png ├── finnish_cooking_a_thresh.png └── linguistics_thesis_a_thresh.png ├── extra_sass └── style.scss ├── mkdocs.yml ├── news ├── scripts │ ├── build_changelog.sh │ ├── create_news_fragments.sh │ ├── get_version.sh │ └── version_based_changelog.sh └── towncrier_template.md ├── pdm.lock ├── pyproject.toml ├── requirements.txt ├── src └── page_dewarp │ ├── __init__.py │ ├── __main__.py │ ├── cli.py │ ├── contours.py │ ├── debug_utils │ ├── __init__.py │ ├── colours.py │ └── viewer.py │ ├── dewarp.py │ ├── image.py │ ├── keypoints.py │ ├── mask.py │ ├── normalisation.py │ ├── optimise.py │ ├── options │ ├── __init__.py │ ├── core.py │ └── k_opt.py │ ├── projection.py │ ├── simple_utils.py │ ├── snoopy.py │ ├── solve.py │ └── spans.py ├── tests └── image_outputs_test.py ├── uv.lock └── vercel.json /.github/workflows/CI.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.github/workflows/CI.yml -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.github/workflows/deploy.yml -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.gitignore -------------------------------------------------------------------------------- /.just/commit.just: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.just/commit.just -------------------------------------------------------------------------------- /.just/hooks.just: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.just/hooks.just -------------------------------------------------------------------------------- /.just/ship.just: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.just/ship.just -------------------------------------------------------------------------------- /.just/test.just: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.just/test.just -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | 4 | -------------------------------------------------------------------------------- /Justfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/Justfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/README.md -------------------------------------------------------------------------------- /derive_cubic.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/derive_cubic.py -------------------------------------------------------------------------------- /docs/api/check_version.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/check_version.md -------------------------------------------------------------------------------- /docs/api/cli.md: -------------------------------------------------------------------------------- 1 | # cli 2 | 3 | ::: page_dewarp.cli 4 | -------------------------------------------------------------------------------- /docs/api/colours.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/colours.md -------------------------------------------------------------------------------- /docs/api/contours.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/contours.md -------------------------------------------------------------------------------- /docs/api/core.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/core.md -------------------------------------------------------------------------------- /docs/api/dewarp.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/dewarp.md -------------------------------------------------------------------------------- /docs/api/image.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/image.md -------------------------------------------------------------------------------- /docs/api/index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/index.md -------------------------------------------------------------------------------- /docs/api/k_opt.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/k_opt.md -------------------------------------------------------------------------------- /docs/api/keypoints.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/keypoints.md -------------------------------------------------------------------------------- /docs/api/mask.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/mask.md -------------------------------------------------------------------------------- /docs/api/normalisation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/normalisation.md -------------------------------------------------------------------------------- /docs/api/optimise.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/optimise.md -------------------------------------------------------------------------------- /docs/api/options.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/options.md -------------------------------------------------------------------------------- /docs/api/projection.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/projection.md -------------------------------------------------------------------------------- /docs/api/simple_utils.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/simple_utils.md -------------------------------------------------------------------------------- /docs/api/snoopy.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/snoopy.md -------------------------------------------------------------------------------- /docs/api/solve.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/solve.md -------------------------------------------------------------------------------- /docs/api/spans.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/spans.md -------------------------------------------------------------------------------- /docs/api/viewer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/api/viewer.md -------------------------------------------------------------------------------- /docs/changelog.md: -------------------------------------------------------------------------------- 1 | --8<-- "CHANGELOG.md" 2 | -------------------------------------------------------------------------------- /docs/get_started.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/get_started.md -------------------------------------------------------------------------------- /docs/how-it-works/Assemble-text-into-spans.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Assemble-text-into-spans.md -------------------------------------------------------------------------------- /docs/how-it-works/Background-on-image-moments.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Background-on-image-moments.md -------------------------------------------------------------------------------- /docs/how-it-works/Create-naïve-parameter-estimate.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Create-naïve-parameter-estimate.md -------------------------------------------------------------------------------- /docs/how-it-works/Detect-text-contours.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Detect-text-contours.md -------------------------------------------------------------------------------- /docs/how-it-works/Introduction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Introduction.md -------------------------------------------------------------------------------- /docs/how-it-works/Obtain-page-boundaries.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Obtain-page-boundaries.md -------------------------------------------------------------------------------- /docs/how-it-works/Optimise-to-minimise-reprojection-error.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Optimise-to-minimise-reprojection-error.md -------------------------------------------------------------------------------- /docs/how-it-works/Remap-image-and-threshold.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Remap-image-and-threshold.md -------------------------------------------------------------------------------- /docs/how-it-works/Sample-spans.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/how-it-works/Sample-spans.md -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --8<-- "README.md" 2 | -------------------------------------------------------------------------------- /docs/theme/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/theme/js/katex.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/theme/js/katex.js -------------------------------------------------------------------------------- /docs/theme/stylesheets/extra.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --md-primary-fg-color--dark: #186FCA; 3 | } 4 | -------------------------------------------------------------------------------- /docs/vercel/build.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/vercel/build.sh -------------------------------------------------------------------------------- /docs/vercel/deploy.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/docs/vercel/deploy.sh -------------------------------------------------------------------------------- /example_input/boston_cooking_a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_input/boston_cooking_a.jpg -------------------------------------------------------------------------------- /example_input/boston_cooking_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_input/boston_cooking_b.jpg -------------------------------------------------------------------------------- /example_input/finnish_cooking_a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_input/finnish_cooking_a.jpg -------------------------------------------------------------------------------- /example_input/linguistics_thesis_a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_input/linguistics_thesis_a.jpg -------------------------------------------------------------------------------- /example_input/linguistics_thesis_b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_input/linguistics_thesis_b.jpg -------------------------------------------------------------------------------- /example_output/boston_cooking_a_thresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_output/boston_cooking_a_thresh.png -------------------------------------------------------------------------------- /example_output/boston_cooking_b_thresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_output/boston_cooking_b_thresh.png -------------------------------------------------------------------------------- /example_output/finnish_cooking_a_thresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_output/finnish_cooking_a_thresh.png -------------------------------------------------------------------------------- /example_output/linguistics_thesis_a_thresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/example_output/linguistics_thesis_a_thresh.png -------------------------------------------------------------------------------- /extra_sass/style.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/extra_sass/style.scss -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/mkdocs.yml -------------------------------------------------------------------------------- /news/scripts/build_changelog.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/news/scripts/build_changelog.sh -------------------------------------------------------------------------------- /news/scripts/create_news_fragments.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/news/scripts/create_news_fragments.sh -------------------------------------------------------------------------------- /news/scripts/get_version.sh: -------------------------------------------------------------------------------- 1 | echo $(pdm show --version --quiet) 2 | -------------------------------------------------------------------------------- /news/scripts/version_based_changelog.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/news/scripts/version_based_changelog.sh -------------------------------------------------------------------------------- /news/towncrier_template.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/news/towncrier_template.md -------------------------------------------------------------------------------- /pdm.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/pdm.lock -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/pyproject.toml -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/requirements.txt -------------------------------------------------------------------------------- /src/page_dewarp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/__init__.py -------------------------------------------------------------------------------- /src/page_dewarp/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/__main__.py -------------------------------------------------------------------------------- /src/page_dewarp/cli.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/cli.py -------------------------------------------------------------------------------- /src/page_dewarp/contours.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/contours.py -------------------------------------------------------------------------------- /src/page_dewarp/debug_utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/debug_utils/__init__.py -------------------------------------------------------------------------------- /src/page_dewarp/debug_utils/colours.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/debug_utils/colours.py -------------------------------------------------------------------------------- /src/page_dewarp/debug_utils/viewer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/debug_utils/viewer.py -------------------------------------------------------------------------------- /src/page_dewarp/dewarp.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/dewarp.py -------------------------------------------------------------------------------- /src/page_dewarp/image.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/image.py -------------------------------------------------------------------------------- /src/page_dewarp/keypoints.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/keypoints.py -------------------------------------------------------------------------------- /src/page_dewarp/mask.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/mask.py -------------------------------------------------------------------------------- /src/page_dewarp/normalisation.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/normalisation.py -------------------------------------------------------------------------------- /src/page_dewarp/optimise.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/optimise.py -------------------------------------------------------------------------------- /src/page_dewarp/options/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/options/__init__.py -------------------------------------------------------------------------------- /src/page_dewarp/options/core.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/options/core.py -------------------------------------------------------------------------------- /src/page_dewarp/options/k_opt.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/options/k_opt.py -------------------------------------------------------------------------------- /src/page_dewarp/projection.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/projection.py -------------------------------------------------------------------------------- /src/page_dewarp/simple_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/simple_utils.py -------------------------------------------------------------------------------- /src/page_dewarp/snoopy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/snoopy.py -------------------------------------------------------------------------------- /src/page_dewarp/solve.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/solve.py -------------------------------------------------------------------------------- /src/page_dewarp/spans.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/src/page_dewarp/spans.py -------------------------------------------------------------------------------- /tests/image_outputs_test.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/tests/image_outputs_test.py -------------------------------------------------------------------------------- /uv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/uv.lock -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lmmx/page-dewarp/HEAD/vercel.json --------------------------------------------------------------------------------