No description
  • Python 90.6%
  • Dockerfile 9.4%
Find a file
ymnuk f041ec85d0
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
first commit
2025-06-10 00:09:59 +03:00
.vscode first commit 2025-06-10 00:09:59 +03:00
rest first commit 2025-06-10 00:09:59 +03:00
.gitignore first commit 2025-06-10 00:09:59 +03:00
.woodpecker.yml first commit 2025-06-10 00:09:59 +03:00
Dockerfile first commit 2025-06-10 00:09:59 +03:00
LICENSE first commit 2025-06-10 00:09:59 +03:00
main.py first commit 2025-06-10 00:09:59 +03:00
README.md first commit 2025-06-10 00:09:59 +03:00
requirements.txt first commit 2025-06-10 00:09:59 +03:00

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

Локальная установка

  1. Клонируйте репозиторий:
git clone https://git.ymnuktech.ru/ymnuk/doc-clean.git
cd doc-clean
  1. Установите зависимости:
pip install -r requirements.txt
  1. Запустите приложение:
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