GithubHelp home page GithubHelp logo

book-tools's Introduction

PDF Analyzer

Утилита для получения всевозможной информации из PDF файла.

Все извлечённые данные каждого PDF документа (а так же картинки и прочее) складываются в отдельные каталоги, для их последующего сравнения в WinMerge.

Основное назначение - сравнение версий журналов с разных сайтов и выбор документа наилучшего качества.

Так же можно использовать для извлечения ресурсов из PDF.

Используемые инструменты:

Не изученные:

book-tools

Утилиты для обработки отсканированных страниц книги

BorderFix

Сканирование страницы редко проходит идеально. Если у сканера чёрная крышка, то у изображения могут появиться чёрные границы.

А некоторые страницы могут иметь ещё и небольшой наклон, который можно исправить, например, с помощью ImageMagick. Вот пример кода, который запускается из BAT файла:

SET dir="result"
if not exist %dir% mkdir %dir%
for /f %%f in ('dir /b *.bmp') do "C:\Documents and Settings\user\Documents\convert.exe" %%f -filter catrom -deskew 40%% +repage ./%dir%/%%f

Пример изображения после такой обработки (белая окантовка плохо видна, поэтому для наглядности добавлена синяя рамка):

Картинка

BorderFix устраняет белую окантовку, затем чёрные полосы и затем растягивает изображение до требуемых размеров. Поскольку фон не всегда идеально белый, происходит аккуратное копирование соседнего фона с растягиванием.

Этапы обработки

После обрезки белых и чёрных полей:

Картинка Картинка

После подгонки габаритов и финальный вариант:

Картинка Картинка

Пограничные случаи

BorderFix не подходит для случаев, когда информативная часть примыкает к краю страницы.

Картинка

В этом случае надо отключать метод fixBlack(), либо, как вариант, можно отключить код, обрезающий эту сторону страницы. Так же этот метод следует выключать, если у сканера белая крышка.

Поле debug позволяет экспериментировать с картинкой и смотреть все этапы её обработки.

PaletteOptimize

Это инструмент для оптимизации палитры отсканированных страниц, с целью уменьшения занимаемого места на диске. Например, если захочется хранить исходники для последующего распознавания текста.

Размер PNG изображений после такой оптимизацции соизмерим с размером JPG файлов с качеством 90%. Впрочем, на практике я всё-таки храню всё в JPG 90%, потому что кодировать в PNG долго, а выигрыш не такой большой, как хотелось бы...

Идея проста - максимально уменьшить количество цветов, в особенности светлого фона, без видимой потери качества.

Исходные данные: отсканированные страницы с градациями одного цвета (белый, светло-коричневый, или любой другой).

PaletteOptimize работает только с изображениями в BMP формате с палитрой.

Количество цветов в палитре может быть и 256, и меньше.

Алгоритм обработки следующий:

  1. Пакетно преобразовать все страницы в BMP 256 (Irfan View)
  2. Оптимизировать палитру с помощью PaletteOptimize
  3. Пакетно преобразовать все страницы в PNG с 32 цветами в палитре (Irfan View)

Результирующий размер в 2-3 раза меньше, чем у PNG без аналогичного сжатия.

Результирующий размер соизмерим с JPEG изображением с качеством 90-95, но при этом в нём не будет искажений, присущих формату JPEG.

Что делает код для каждого цвета в палитре:

  • Вычисляет усреднённый цвет по трём каналам
  • Приводит цвет к ближайшему доступному
    • Если усреднённый цвет меньше 120, то доступны цвета через 4 (0, 4, 8, ...)
    • Если усреднённый цвет больше 120, то доступны цвета через 8 (120, 128, ...)
  • Далее на цвет накладывается оттенок, который был в оригинале.

Результаты работы в цифрах

Книга BMP JPG 90% PNG (32 цвета) PNG (32 цвета, оптимизация)
Большая книга кодов и головоломок 8860 1379 3004 840
Лучшие игры для IBM PC (600 DPI) 7416 460 976 549
Лучшие игры для IBM PC (300 DPI) 619 145 275 155
1500 игр Sega (600 DPI) 28033 1432 3063 1563
1500 игр Sega (300 DPI) 7011 462 604 426

Чем чище и равномернее фон страницы, тем сильнее проявляется оптимизация.

Параметры

  • threshold = 120; Разделитель между тёмными и светлыми цветами
  • whiteGroup = 8; Диапазон группировки светлых цветов; если тёмный фон, то 8, если белый, то 16. Бывает, что приходится ставить 8, потому что видны слишком резкие переходы цветов фона.

book-tools's People

Contributors

leonisx avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.