Автор Тема: как ещё ужать бинаризованые сканы (есть идея, кто поможет?)  (Прочитано 24163 раз)

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
morean
Программа, которую мы тут обсуждаем, наверное, в идеале могла бы стать уникальным инструментом восстановления в приемлемый вид низкокачественных DjVu-книг. Делать над ними OCR - слишком муторно. Оставить так как есть - тоже плохо - читать их почти невозможно. А вот суметь подменить шрифты (пусть даже и с частичным участием OCR) - это было бы находка. Тем самым самая дрянная DjVu-книга сразу же стала бы конфеткой. А таких книг уже ой как много! Особенно тяжёлый случай - сфотографированные книги. С ними уже хоть тресни, ничего не сделаешь - они в низком DPI и в режиме серого, да ещё и неравномерно-засвеченные и дико перекривленные во всех плоскостях. И пересканировать заново их тоже зачастую нереально (редкие там или труднодоступные).

По трудоёмкости подмена шрифтов будет не трудней OCR - но всё же чуток легче (за счёт не-создания заново макета страницы).

После подмены шрифтов останутся, правда, картинки необработанные (перекривленные в случае сфотканных книг) - ну да это легко можно будет пережить.

morean

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Цитата: monday2000
Терпение же у Вас, однако...
к сожалению его нет достаточного для создания собственных книг...
тем не менее вот так однажды помучившись начинаешь уважать труд других,
и представлять огромный объём работы потраченый на создание каждой книги...

...а редактировал я первых две-три строки, (в которых кодер всегда находит "образец для подражания", и потом находил сильно отличающиеся, вручную их менял эталонными...
поскольку шрифт был высотой в 34-35 пиксел, несколько проходов мягким медианным фильтром поубирали одиночные пикселы, шрифт немного скруглился, но вероятно именно поэтому выглядел
Цитата: monday2000
.....как в кино показывают, когда жертве присылают письмо - а там разнобойными буквами, вырезанными из газет, написано "я тебя убью".

morean

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Цитата: monday2000
Программа, которую мы тут обсуждаем, наверное, в идеале могла бы стать уникальным инструментом восстановления в приемлемый вид низкокачественных DjVu-книг. Делать над ними OCR - слишком муторно. Оставить так как есть - тоже плохо - читать их почти невозможно. А вот суметь подменить шрифты (пусть даже и с частичным участием OCR) - это было бы находка. Тем самым самая дрянная DjVu-книга сразу же стала бы конфеткой. А таких книг уже ой как много! Особенно тяжёлый случай - сфотографированные книги. С ними уже хоть тресни, ничего не сделаешь - они в низком DPI и в режиме серого, да ещё и неравномерно-засвеченные и дико перекривленные во всех плоскостях. И пересканировать заново их тоже зачастую нереально (редкие там или труднодоступные).
вот да - про них то и речь...
одно только плохо что если они "в сером" то это очень затруднит их редактирование...
тут помогало только увеличение размера в 2-4 или даже 8 раз, поворот и бинаризация, - иногда сам диву давался - как из г-на кофетка выходила... 
но ресурсы жрёт такое преобразование - просто неймоверные...
поворота картинки всё тем же ИРФАНВЬЮЕРОМ можно так и не дождатся - вылетает...

если же они бинаризованы, но в низком DPI - то тут немного проще, ибо меньше пиксел - меньше "вариантов нарисования"...
Цитата: monday2000
По трудоёмкости подмена шрифтов будет не трудней OCR - но всё же чуток легче (за счёт не-создания заново макета страницы).
как вариант и правда, программа-анализатор шрифта тут бы помогла, но вот расстановка буков и слов в строке - это и есть видимо некая душа чтоли книги, ибо после того же ФАЙНРИДЕРА чтото теряется, хотя в последних версиях (у меня пока 9-ка), он уже довольно грамотно пытается всё порасставлять...
но шрифт всегда другой, и он всегда с серым сглаживанием, и главное не сохраняет в нами любимом djvu >:(

morean

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Цитата: monday2000
Есть такая китайская программа - DjVu Toy..........
поигрался - хороший компактный тулз, но и впрямь недоделаный...
один шаг китайцам до нашей программы, - маленько не додумались

...удручили конечно "масштабы бедствия" - на вполне чистой текстовой странице  оказывается от 300 до 1500 шейпов...  :o даже просто их все ткнуть мышей - дело нелёгкое !  ...а нужных около сотни всего лишь
но тем весомее конечноже, будут результаты чистки!
...расстановкой птичек тут пожалуй не обойтись - тут надо выделение группы движением мыши....

и мусора много - пожалуй команда УДАЛИТЬ тоже нужна
« Последнее редактирование: 21 ѕЪвпСам 2010, 13:51:24 от morean »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
morean
Цитировать
...а редактировал я первых две-три строки, (в которых кодер всегда находит "образец для подражания", и потом находил сильно отличающиеся, вручную их менял эталонными...
Я так думаю, что проще будет делать так:
1. OCR-ние текста в маске DjVu.
2. Поиск наиболее подходящего векторного шрифта (внешне похожего на сканированный)
3. Растеризация в шейпы векторного шрифта и замена полученными шейпами имеющихся шейпов в DjVu-файле.

Это, как мне кажется, наиболее реалистичный вариант - с точки зрения его технической реализации. И наиболее экономически целесообразный - если уж и тратить усилия на такую работу - то чтобы при этом получать максимально лучший результат.

Хотя даже п.2 - ну очень сложно сделать (это и есть суть работы ClearScan от Adobe). Делать всё это в каком-то ином варианте (с чисто ручным поиском соответствий шейпов) - пожалуй, каторга. Заодно OCR решит (наверное) проблему автоматического узнавания слипшихся шейпов.
Цитировать
одно только плохо что если они "в сером" то это очень затруднит их редактирование...
Обсуждаемая программа будет иметь дело исключительно с маской готового DjVu - а не с исходными серыми сканами. Если же сам DjVu содержит серый задний фон - то это не будет иметь значения - нужна-то маска, а не этот задний серый фон (он будет просто игнорироваться).
Цитировать
это и есть видимо некая душа чтоли книги, ибо после того же ФАЙНРИДЕРА чтото теряется, хотя в последних версиях (у меня пока 9-ка), он уже довольно грамотно пытается всё порасставлять...
но шрифт всегда другой, и он всегда с серым сглаживанием, и главное не сохраняет в нами любимом djvu
Надо просто распознавать буква-в-букву и тщательно подбирать соответствие шрифтов (заменяющего и нарисованного). Конечно, всё равно полного визуального соответствия не добьёмся (кстати, подбор заменяющего шрифта может будет, естестенно, с ручным контролем) - так что "душа книги" пострадает по-любому. :) Но всё же это будет нечто в рамках приличия. К тому же, если бы мы делали просто OCR из DjVu в FB2 - тогда уж первоначальный "дух" книги был бы вообще утрачен.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
morean
Цитировать
...удручили конечно "масштабы бедствия" - на вполне чистой текстовой странице  оказывается от 300 до 1500 шейпов...
Ну да, каждая отдельная буква - это один шейп. Посмотреть количество шейпов можно в WinDjView- в описании чанка FGbz - перед словом "ccs" указывается количество шейпов.
Цитировать
даже просто их все ткнуть мышей - дело нелёгкое !  ...а нужных около сотни всего лишь
но тем весомее конечноже, будут результаты чистки!
...расстановкой птичек тут пожалуй не обойтись - тут надо выделение группы движением мыши....
Поэтому я и говорю об OCR - как о наиболее реальном механизме опознавания шейпов.

morean

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Цитировать
Поэтому я и говорю об OCR - как о наиболее реальном механизме опознавания шейпов.
ога - я тоже про него родимого...
только не опознавания , а в даном случае группирования....
 
а группировать (сортировать) по всей видимости нужно по таким критериям:
- схожее начертание (наиболее сложная реализация с использованием OCR);
- высота;
- ширина;
- частота употребления...
ибо как я посмотрел что DjVuToy наковырял в файлах - мне аж тошно стало,
там кроме кучи букаф ещё и мусор и фрагменты графики (довольно крупные)...
поэтому сортировка в таком море мусора - наипервейшая задача...

вот мы и выяснили ещё один важный пункт в меню, или лучше кнопку
ГРУППИРОВАТЬ ПО: ⇒ (выпадающий список)

morean

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
monday2000, кстати я считал почемуто, что в многостраничных DJVU библиотеки шейпов общие на несколько страниц - это так, или я заблуждаюсь ?

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
morean
Цитировать
только не опознавания , а в даном случае группирования....
Нет, группирование - это слишком примитивно. Лучше полноценный OCR (так сказать, глобальное группирование).

И ещё один резон - использование обсуждаемой программы не должно быть более трудоёмким, чем простое применение OCR к данному DjVu-файлу. Иначе такой программой просто не будут пользоваться - а будут делать обычный OCR.
Цитировать
ибо как я посмотрел что DjVuToy наковырял в файлах - мне аж тошно стало,
там кроме кучи букаф ещё и мусор и фрагменты графики (довольно крупные)...
поэтому сортировка в таком море мусора - наипервейшая задача...
Я вот об этом тоже сегодня задумался. И пришёл к выводу, что распознавать непосредственно шейпы при помощи OCR невозможно. Распознавать можно только изображение текста - т.е. шейпы, уже отрисованные в текст. Говорят, что даже одна буква, если она большая, может записываться кусочками в несколько шейпов. Для OCR эти шейпы будут просто мусором - но они же отрисованные в букву, станут понятны для OCR.

Короче говоря, что ни придумывай - а всё равно получается... ClearScan (как у Адобов). :) Так что надо делать самодельный ClearScan - а результат уже сам по себе отлично сожмётся в DjVu.

Вот только сделать самодельный ClearScan - это ИМХО крайне трудно. Я не возьмусь. А пока что можно пользоваться существующим. Только аккуратно - вроде точно не известно, хорошо ли он работает с русским текстом, и ещё я видел мнение, что у него целые абзацы порой пропадают.
Цитировать
это так, или я заблуждаюсь ?
Совершенно верно, называется "словарь разделённых символов" (shared shapes dictionnary, djbz). Обычно один на каждые 10 страниц (можно хоть один на всю книгу - но так тормознутей будет её чтение).
« Последнее редактирование: 21 ѕЪвпСам 2010, 22:41:02 от monday2000 »

morean

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Цитата: monday2000
И пришёл к выводу, что распознавать непосредственно шейпы при помощи OCR невозможно.
однако текст всёже неплохо распознаётся простейшими djvu программами, я так понимаю без встроеных словарей и прочих примочек ФАЙНРИДЕРА...

да и не про качество распознавания речь, - а про то чтоб на одном экране побольше сгруппировать похожих для облегчения копаний...
Вы monday2000, немного уводите в сторону (- я вас тут прекрасно понимаю), однако полноценной OCR-ки в формате мы дождёмся лишь когда монстр ABBY соблаговолит сделать сохранение в djvu - НЕ РАНЬШЕ(!)будем реалистами...
счас речь про ручную чистку (кторой и в файнридере никто не избежал)

но продолжим:

...вот простой пример - при помощи DjVuToy, я, как уже было сказано, узрел 300-1500 шейпов на странице, а надо их около 100 реально имеющихся (откуда 100 скажу попозже)...
т.е приходится из 3-15 изображений выбрать одно и его принять основным....
это не так и много, - если OCR поможет их собрать на одном экране в пределах зрительной области, то разговор с ними довольно короткий - максимум минута и они все вручную уделаны....
и совсем не беда, если OCR чтото "прошляпила" - с каждым проходом вариантов всё меньше и в конце остаётся просто алфавит, и доходит очередь и до слипшихся...

morean

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Цитировать
Распознавать можно только изображение текста - т.е. шейпы, уже отрисованные в текст.
к сожалению, - ДА! до сохранения в djvu..
попробовал счас в LizardTech Document Express Editor пересохранить с OCR и увидел что опция OCR - "серая" :-\  это грустно....
пойду с горя выпью пива....

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
morean
Цитировать
однако текст всёже неплохо распознаётся простейшими djvu программами, я так понимаю без встроеных словарей и прочих примочек ФАЙНРИДЕРА...
Да, признаться для меня это пока некое таинство. :D Этим занимается т.н. JB2-кодировщик - во время кодирования в DjVu.
Цитировать
да и не про качество распознавания речь, - а про то чтоб на одном экране побольше сгруппировать похожих для облегчения копаний...
Делать это вручную - ИМХО не вариант - работа просто адова. Никто не будет на деле с этим связываться. Да и зачем - когда уж проще просто сделать OCR. Я считаю - если уж и тратить время на оптимизацию шейпов - тогда уж сразу делать это радикально, т.е. через OCR. Это ведь тоже своего рода группирование шейпов - только сразу радикальное.
Цитировать
однако полноценной OCR-ки в формате мы дождёмся лишь когда монстр ABBY соблаговолит сделать сохранение в djvu - НЕ РАНЬШЕ(!)будем реалистами...
Они уже этим заинтересовались - так что это время не за горами. Но ещё есть и CuneiForm.
Цитировать
максимум минута и они все вручную уделаны....
Ну я сильно сомневаюсь насчёт одной минуты. Я такое называю не "промышленный" подход. Потому что это больше похоже на алхимию. И ИМХО слишком зависит от везения - как там, шейпы сгруппируются или нет на данной странице? А вот представьте - просмотрели Вы вручную все шейпы на данной странице - и убедились: группировать практически нечего (или в результате группирования получается бред - скачущие буквы). А вот подход через глобальный OCR - это всегда гарантирует наиоптимальнейший вариант. К тому же OCR-программы уже есть - их не надо самому придумывать.

В общем, я склоняюсь к необходимости реализовать самодельный аналог ClearScan от адобов - лучше тут не придумаешь.

morean

  • Пользователь
  • **
  • Сообщений: 60
    • Просмотр профиля
Цитировать
Они уже этим заинтересовались
ну то что на вход можно djvu подавать стало с девятки начиная - это ещё не повод для оптимизма

да и ресурсоёмкий он - этож просто ППЦ !!!
у меня машина висит в полный рост если больше страницы пытаюсь впихнуть,
гектар памяти улетает в трубу мгновенно и тутже ясно что его мало даже на 1 стр....
 что будет когда ещё и сохранять какаянить 11 версия в  djvu научится и подумать страшно...

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
morean
Цитировать
ну то что на вход можно djvu подавать стало с девятки начиная - это ещё не повод для оптимизма
Совершенно верно.  :) Но см. сюда: http://finereader.abbyy.ru/forum/actualthread.aspx?tid=1011 :
Цитата: Serjo ABBYY
Экспорт в DjVu, действительно, назрел давно и мы активно думаем в этом направлении.
Но я, честно, слабо надеюсь на ABBYY. Они, если что и сделают - то всё равно не так, как нужно. 8) Зато у нас есть CuneiForm.
Цитировать
что будет когда ещё и сохранять какаянить 11 версия в  djvu научится и подумать страшно...
Да уж ABBYY почти наверняка захочет сделать в Файнридере именно сохранение в DjVu (а не просто OCR-ние стороннего готового DjVu - чтобы было бы самым красивым решением).

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
morean
Обсуждаемую программу, наверное, можно сделать так:

Брать DjVu файл со встроенным OCR, затем из каждой OCR-буквы генерировать шейп (аналогично ClearScan) и заменять текущий шейп сгенерированным. Вот как-то так. Естественно, при этом предполагается, что OCR в DjVu на 100% вычитан вручную (т.е. не содержит ошибок распознавания).

Или же прямо из программы распознавания экспортировать данные об OCR-слое и с ними работать (OCR-буквы, их размеры и координаты на листе).

Правда, непонятно, как конкретно осуществлять процедуру сравнения нарисованных - генерации на их базе искусственных шрифтов. Это будет самой большой сложностью. Поэтому я и смотрю с надеждой на CuneiForm - там ведь открытые исходники (почти), значит там и можно реализовать внутри самодельный аналог ClearScan.

Может быть, пригодится и такая зацепка: в книгах нередко пишут, каким шрифтом она отпечатана, и какого размера листы в книге. Хотя это весьма призрачная зацепка.

После замены шейпов на "искусственные" проводить их перегруппировку (с выделением общих символов) - с целью оптимизации размера DjVu.

В Файнридере уже сейчас можно делать векторный PDF из скана. Это похоже на обсуждаемый функционал - но всё-таки отлично от него - потому что там нужно заново воссоздавать макет страницы - а в нашем случае нужно воссоздавать только сами буквы - что гораздо легче.
« Последнее редактирование: 22 ѕЪвпСам 2010, 15:04:31 от monday2000 »