No description
- Python 90.6%
- Dockerfile 9.4%
|
|
||
|---|---|---|
| .vscode | ||
| rest | ||
| .gitignore | ||
| .woodpecker.yml | ||
| Dockerfile | ||
| LICENSE | ||
| main.py | ||
| README.md | ||
| requirements.txt | ||
Doc-Clean: Оптимизация сканированных документов
Doc-Clean — это высокоэффективный инструмент для обработки сканированных документов, основанный на алгоритме из проекта noteshrink. Приложение преобразует изображения документов в компактные PDF-файлы или PNG-изображения с удалением фонового шума, артефактов сканирования и оптимизацией цветовой палитры.
Ключевые возможности
- 🖼️ Преобразование сканов в чистые, читаемые документы
- 📄 Уменьшение размера файлов до 90%
- 🎨 Автоматическая коррекция цветов и удаление фона
- ⚡️ Быстрая обработка через REST API
- 🐳 Готовая Docker-сборка для простого развертывания
- 📦 Поддержка пакетной обработки множества изображений
Технологическая основа
Проект основан на алгоритме noteshrink (автор Matt Zucker), который использует:
- Кластеризацию цветов методом k-средних
- Анализ насыщенности и яркости пикселей
- Адаптивное пороговое выделение текста
- Оптимизацию палитры изображения
Быстрый старт
Требования
- Docker (рекомендуется)
- Python 3.9+
- Пакеты:
fastapi,uvicorn,numpy,pillow,scipy,img2pdf
Запуск через Docker
docker run -d --name doc-clean -p 8000:8000 git.ymnuktech.ru/ymnuk/doc-clean
Локальная установка
- Клонируйте репозиторий:
git clone https://git.ymnuktech.ru/ymnuk/doc-clean.git
cd doc-clean
- Установите зависимости:
pip install -r requirements.txt
- Запустите приложение:
uvicorn main:app --host 0.0.0.0 --port 8000
Использование API
Параметры запроса
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
files |
File[] | - | Изображения для обработки |
value_threshold |
float | 0.25 | Порог различия по яркости (0-1) |
sat_threshold |
float | 0.20 | Порог различия по насыщенности (0-1) |
num_colors |
int | 8 | Количество цветов в палитре |
sample_fraction |
float | 0.05 | Доля пикселей для анализа (0-1) |
white_bg |
bool | False | Замена фона на белый |
global_palette |
bool | False | Единая палитра для всех изображений |
saturate |
bool | True | Усиление цветов |
sort_numerically |
bool | True | Сортировка файлов по номерам |
use_img2pdf |
bool | True | Использовать img2pdf для конвертации |
pdf_cmd |
string | "convert %i %o" | Команда для создания PDF |
Примеры запросов
Обработка одного изображения (возвращает PNG):
curl -X POST "http://localhost:8000/convert" \
-F "files=@document.jpg" \
-F "white_bg=true" \
-o cleaned.png
Обработка нескольких изображений (возвращает PDF):
curl -X POST "http://localhost:8000/convert" \
-F "files=@page1.jpg" \
-F "files=@page2.png" \
-F "global_palette=true" \
-F "num_colors=6" \
-o document.pdf
Продвинутая обработка:
curl -X POST "http://localhost:8000/convert" \
-F "files=@scan1.tiff" \
-F "files=@scan2.tiff" \
-F "value_threshold=0.3" \
-F "sat_threshold=0.15" \
-F "num_colors=4" \
-F "sample_fraction=0.1" \
-F "white_bg=true" \
-F "global_palette=true" \
-o optimized.pdf
Docker-сборка
Для сборки собственного Docker-образа:
docker build -t doc-clean .
docker run -d --name doc-clean -p 8000:8000 doc-clean