Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Scan Tailor

Модерирует : gyra, Maz

Widok (17-02-2010 12:17): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107

   

Tulon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Scan Tailor

 
Скриншот:

В разработке находится новая альтернатива СканКромсатору. Разработчик - ваш покорный слуга.
Задача программы - пост-обработка сырых сканов с целью их последующей сборки в PDF или DJVU.
 
Уже есть на что посмотреть, и возможно присоединиться к проекту. Проект с открытыми исходниками и кросс-платформенный (Windows + Linux).
 
По сравнению со СканКромсатором планируется большее удобство использования, большая интерактивность, но при этом не меньшая автоматизация процесса.
 
Сайт проекта: http://scantailor.sf.net     Скриншоты
 
Топик программы на форуме Натахаус       Англоязычный топик по ScanTailor

Документация
 
Документация (Wiki)              Зоны картинок в ScanTailor
 
Статья: Scan Tailor. Программа для обработки отсканированных книг
 
Видеоурок: Создание DjVu с помощью Scan Tailor (зеркало)
 
Методика использования STA совместно с Djvu Imager

Дистрибутивы
 
Версия СТ с функцией выпрямления искривленных строк (dewarp от Rob)
 
Патч от anagnost96 Вариант ScanTailor с этим патчем (STA)  Зеркало
 
ScanTailor для Mac
 
Последние изменения в дереве исходников - для сильно любопытных и владеющих английским.
Там же можно подписаться на rss/atom - для нетерпеливых.
 

Дополнительно
 
ST GreyText v1.0 Программа для генерации вывода как бы "Только текст (в режиме серого)" - для Scan Tailor от anagnost96.
 
LayerTailor Программа для разделения сканов (после "Смешанный режим) на foreground и background слои с целью последующего раздельного кодирования в djvu. Принцип работы: Все черные пиксели (яркость==0) переносятся в foreground, остальное - в background. Функция layer принимает на входе 3 параметра: исходное имя файла TIFF, имя файла для foreground и имя файла background. Автор: U235.
 
Предложения к anagnost96 по поводу улучшения его модификации СТ
Сравнение выпрямления искривленных строк в СТ и в BR

Статья О возможности альтернативы СканКромсатору     Полезные ссылки по теме топика
ArtScan - ещё одна программа для сканобработки.

Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 21:37 15-06-2008 | Исправлено: ndch, 22:37 12-02-2010
Tulon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В полный игнор не обязательно - когда разговор идет по существу, я и отвечаю по существу, а когда начинается обсуждение личностей, тогда и игнор.

Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 12:09 07-02-2009
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tulon

Цитата:
Это может более или менее сносно работать, но тут есть пара проблем:
1. Объекты классифицируются по количеству пикселей, а не по ширине / высоте объекта.
2. У меня реализован только прямоугольный dilate, что нежелательно в данном случае.
 
В общем на тот момент когда я прочел ваш пост, я уже реализовал это на базе Voronoi Diagram, благо соответствующий класс у меня уже был.  Работает достаточно бысто, правда памяти много жрет - аж 12 байт на пиксель.

1. Думаю что, ничего страшного, т.к. объекты для удаления сами по себе небольшого размера.
2. Это тоже будет работать.
12 байт/пиксель(1 бит) - многовато... Даже если делать полный Labeling с RegionProps как в Matlab выйдет возможно меньше  
(Функция RegionProps - создает структуру, в которой хранится номер объекта, его положение, число пикселей, сама битовая маска и др. свойства, которые, ИМХО, могут быть полезны в дальнейшем развитии программы, например для выделения текста,исправления кривизны строк, интелектуального удаления грязи на bw изображении).
 
denver 22

Цитата:
Вы пожалуйста тоже делайте сборки (если не трудно). Я не уверен, что теперь делаю все правильно.

Я сейчас занимаюсь автоматизией всего процесса: выкачки из svn, правки Version ,сборки и выгрузки на свой сайт через ftp (Rev.268). Надеюсь, как только допишу и отлажу скрипт - сборки будут появлятся в течение нескольких часов после обновления в svn.
 

Всего записей: 881 | Зарегистр. 14-12-2005 | Отправлено: 12:33 07-02-2009
Tulon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
U235
Вот только чем labelling поможет для нахождения ближайших соседей?
 
У меня в классе InfluenceMap для каждого пикселя хранится следующая информация:
1. Номер соединенного компонента, в зоне влияния которго находится данный пиксель. (4 байта)
2. Вектор от данного пиксела до ближайшего пикселя соединенного компонента. (2x2 байта)
3. Квадрат расстояния до ближайшего пикселя соединенного компонента. (4 байта)
Ну а кроме этого я держу вспомогательный массив, где для каждого компонента хранятся его характеристики, например колличество пикселей.
В принципе квадрат расстояния можно было бы исключить, потому как его можно вычислить из вектора.  Он хранится для ускорения постороения этой карты влияний, которая по сути дела есть ни что иное, как диаграмма Вороного.
Строится эта карта влияния методом vector propagation.
 
Ну а наличие соседних объектов я проверяю так:
Пробегаю по карте влияний, и если два соседних пиксела находятся в разных зонах влияния, то из двух векторов получаю расстояние между влияющими объектами.  Потом исходя из размеров компонентов, вычисляю порог расстояния, и если реальное расстояние меньше порога, тогда объект помечается как не мусор.  

Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 13:38 07-02-2009
denver 22

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rev.267:
- Тестирование на проекте последнего моего примера (см. выше) примера: Качество очистки в плане сохранения полезного контента улучшилось. На большинстве "сложных" рисунков сохранилось практически всё. Исчезли единичные точки, что (на мой взгляд) никак не отразилось на качестве рисунка.
 
Далее - http://narod.ru/disk/5524292000/Scan-Test-267.7z.html:
- aa_0006-стр.8.tif, aa_0007_стр.11.tif, aa_0014-стр.24.tif, aa_0036-стр.69.tif - на указанных страницах в полезную область вкобчены жирные точки, находящиеся на значительном расстоянии от области текста. Хоть таких примеров оказалось достаточно много, но для меня ситуация терпима. Скидываю, так сказать, для профилактики.
- Despeckling: aa_0023.tif, 0042_aa_0023.tiff - пример неприемлемой очистки; aa_0034.tif, 0064_aa_0034.tiff - удалена часть пунктирных линий; aa_0040.tif, 0077_aa_0040.tiff - в нескольких местах текст стал нечитаем. А также, как минимум в 6-ти случаях у двоеточий пропала нижняя точка.
- Вылетает программа. Ошибка воспроизводится. Не знаю как вам её представить, поэтому скидываю всю книгу - (ссылка). Судя по thumbs, ошибка возникает на aa_0176 (последний thumbs - aa_0175).

Всего записей: 602 | Зарегистр. 28-07-2005 | Отправлено: 13:50 07-02-2009
Arcand

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Не знаю, насколько это вписывается в планы, но мне, как просто пользователю, хотелось бы видеть более тонкий результат. Или, может быть, интерактивный контроль "степени жирности" - регулировку порога при преобразовании в BW.  
Может имеет смысл добавить возможность смещать по желанию вычисленный порог в Otsu.
Кстати, плагин подобного рода планирую сделать, для коллекции

Всего записей: 2493 | Зарегистр. 28-05-2004 | Отправлено: 15:05 07-02-2009
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tulon

Цитата:
Вот только чем labelling поможет для нахождения ближайших соседей?

Сам по себе - никак не поможет.  Это больше, ИМХО, вспомогательная операция, с результатом которой можно работать как с базой данных объектов и их свойств + при относительно небольшом числе объектов это возможно еще и сэкономит память.
 
Нельзя ли в  вашем алгоритме все объекты попробовать заменить  точкой, в центре масс каждого объекта? Думаю это не сильно скажется на результатах, но упростит вычисления. Хранить данные при этом возможно лучше будет в виде: №объекта, x,y,S-количество пикселей (площадь).  
 
Кстати, возможно бдет интересно:http://rrc.dgu.ru/res/matlab/imageprocess/book3/13/bwmorph.html
рис г. - по сути диаграма Вороного для рис. в., получаемая через бинарную морфологию.
 

Всего записей: 881 | Зарегистр. 14-12-2005 | Отправлено: 16:41 07-02-2009
Tulon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
denver 22

Цитата:
- aa_0006-стр.8.tif, aa_0007_стр.11.tif, aa_0014-стр.24.tif, aa_0036-стр.69.tif - на указанных страницах в полезную область вкобчены жирные точки, находящиеся на значительном расстоянии от области текста. Хоть таких примеров оказалось достаточно много, но для меня ситуация терпима. Скидываю, так сказать, для профилактики.  

Пока я пожалуй оставлю стадию "Полезная область" в покое.  Лучшее - враг хорошего.
 

Цитата:
- Вылетает программа. Ошибка воспроизводится.

Исправил.
 
Arcand

Цитата:
Может имеет смысл добавить возможность смещать по желанию вычисленный порог в Otsu.  

Может так и сделаю, но не сейчас.
 
U235

Цитата:
Сам по себе - никак не поможет.  Это больше, ИМХО, вспомогательная операция, с результатом которой можно работать как с базой данных объектов и их свойств + при относительно небольшом числе объектов это возможно еще и сэкономит память.  

Labeling в чистом виде у меня тоже есть.  Класс называется ConnectivityMap.  Для каждого пикселя в ней хранится идентификатор соединенного компонента, к которому он принадлежит.  Кстати из нее и строится InfluenceMap - отсюда и дополнительные 4 байта на пиксель.
При желании можно выдирать компоненты один за другим.  Для этого есть классы ConnCompEraser (когда не нужно изображение компонента) и ConnCompEraserExt (когда нужно).
 

Цитата:
Нельзя ли в  вашем алгоритме все объекты попробовать заменить  точкой, в центре масс каждого объекта? Думаю это не сильно скажется на результатах, но упростит вычисления. Хранить данные при этом возможно лучше будет в виде: №объекта, x,y,S-количество пикселей (площадь).  

Можно то можно, но уж больно грубо получается - считать любой объект кругом.
 
 
 
Добавлено:
Еще я сделал отключение despeckle и вручную подобрал параметры смягчения для разных DPI.  Это должно повысить скорость вывода на высоких DPI.
Вроде как теперь ничего не мешает сделать оффициальный релиз.

Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 17:31 07-02-2009
denver 22

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
U235
На счет автоматизации - рад слышать. Значит мне теперь только тестировать программу останется . Тогда помимо выкладывания в топике, обновляйте пожалуйста и ссылку в шапке.

Всего записей: 602 | Зарегистр. 28-07-2005 | Отправлено: 18:10 07-02-2009
Tulon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Тогда помимо выкладывания в топике, обновляйте пожалуйста и ссылку в шапке.

Можно просто дать в шапке ссылку на директорию, куда у него выкладываются сборки.  Так не придется каждый раз обновлять шапку.

Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 18:17 07-02-2009
denver 22

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сборка (Rev.271) в шапке
 
Добавлено:

Цитата:
Пока я пожалуй оставлю стадию "Полезная область" в покое.  Лучшее - враг хорошего.

Полностью - ЗА. На данный момент меня вполне устраивает качество. Просто отписываю лишний раз с примерами.

Всего записей: 602 | Зарегистр. 28-07-2005 | Отправлено: 20:06 07-02-2009
denver 22

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вроде как теперь ничего не мешает сделать оффициальный релиз.

Полностью ЗА.
В новой версии сделал свой проблемный (с вылетом) проект. Больше не упал.
Качество despeckle порадовало. Не знаю, улучшали ли вы его со сборки 267, но он сохранил практически все точки в полезной области. Только на одном скане получилось так, что в одном рисунке точки сохранились (где он раньше удалил бы их), а на другом рисунке - частично вычистил.
Но теперь, когда despeckle можно выключать для отдельного скана, можно решать подобные проблемы.
От себя могу сказать, что оставшиеся порядка 30 книг скорее всего буду обрабатывать именно в ST!!! Т.к. и качество на уровне, и гибкость настройки стала такой, чтобы справляться с большинством проблем.
Может успеете перед релизом добавить упомянутую ранее функцию, чтобы после Пакетной обработки программа переходила в первому скану?

Всего записей: 602 | Зарегистр. 28-07-2005 | Отправлено: 22:08 07-02-2009
Tulon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
denver 22

Цитата:
Может успеете перед релизом добавить упомянутую ранее функцию, чтобы после Пакетной обработки программа переходила в первому скану?

Добавлю.  Еще переименую кнопку автоскрола и сделаю автовырезание кавычек из путей.  Вроде пятиминутных задач больше не осталось.
 
Admig314
Проверьте, устраиваит ли вас сглаживание при 1200 DPI c новыми параметрами.  По мне так стало еще лучше, чем было.  И быстрее.
 
Остальные тоже могут сравнить.  На 300 DPI ничего не изменилось, так что тестируйте более высокие разрешения вывода.

Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 22:46 07-02-2009
denver 22

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
На 300 DPI ничего не изменилось, так что тестируйте более высокие разрешения вывода.

Хм... Значит мне показалось, что ранее замеченное утолщение текста теперь исправлено? Может просто сканы хорошего качества попались и утолщений не произошло...

Всего записей: 602 | Зарегистр. 28-07-2005 | Отправлено: 00:33 08-02-2009
Tulon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все сделал.
 
Добавлено:

Цитата:
Хм... Значит мне показалось, что ранее замеченное утолщение текста теперь исправлено? Может просто сканы хорошего качества попались и утолщений не произошло...

Речь идет о разрешении вывода.  Если у вас 600, то вполне возможно так и есть.

Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 00:33 08-02-2009
denver 22

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я понял про что вы говорили. Но мне показалось, что у меня и на 300 dpi изменения произошли. Ещё до того, как вы об этом написали (см. мои выводы для (Rev.271)). Может мне и показалось. Время покажет.
Сборка (Rev.274) в шапке.
 
Добавлено:
Не знаю, 5-минутные ли это задачи, но на всякий случай напомню:
- добавление тайминга оставшегося времени до завершения Пакетной обработки (например в нижнюю строку программы).
- не создавать заново файл на этапе Вывод, если параметры для этого файла не менялись.
Если это не важный задачи, мое мнение о релизе см. выше

Всего записей: 602 | Зарегистр. 28-07-2005 | Отправлено: 01:00 08-02-2009 | Исправлено: denver 22, 01:01 08-02-2009
Admig314

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Проверьте, устраиваит ли вас сглаживание при 1200 DPI c новыми параметрами.  По мне так стало еще лучше, чем было.  И быстрее.

 
Отчет по Rev.274
Без деспекла точно быстрее, с деспеклом ускорение незаметно.
Многоточия с деспеклом по-прежнему исчезают.
Буквы стали явно тоньше. Но тут уж кому как. Кому-то этого будет вполне достаточно. Но лично мне желательно бы еще тоньше. Прошу понять правильно, это не каприз, а специфика моей нынешней задачи. Поместив отсканированную страницу в программу верстки (InDesign) и точно подобрав оригинальные шрифты, поверх скана я вношу необходимые исправления в текст. Так вот со страницами после Rev.274 впечатанное шрифтом явно отличается от сканированного текста (буквы тоньше). При использовании страницы, которую я приводил в качестве примера обработки в фотошопе, совпадение по толщине букв практически идеальное - смотрится как единый текст.
 
Попутно еще вопрос. Возможно ли удаление страниц из сохраненного проекта. Например для моего двухстраничного скана: поворачиваю на 90 град., разделяю на отдельные страницы, а затем мне нужно обработать только одну из них. Вторую не нужно ни выравнивать, ни резать - она вообще не нужна.
 
И еще касательно ручного выравнивания перекоса. Сейчас можно выравнивать по двум реперным линиям, проходящим через центр страницы - вертикальной и горизонтальной. Но страница может быть такой, что область, удобная для визуального выравнивания находится, например, в нижней части, далеко от горизонтальной реперной линии. Тогда на глаз не очень-то выровняешь. Частично это можно решить, увеличив мастштаб просмотра и сдвинув страницу, но все-таки это не очень удобно. Может быть сделать сетку опорных линий?

Всего записей: 17 | Зарегистр. 19-12-2005 | Отправлено: 01:56 08-02-2009
Tulon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Многоточия с деспеклом по-прежнему исчезают.  

Решил пока оставить despeckle как есть.
 

Цитата:
Буквы стали явно тоньше. Но тут уж кому как. Кому-то этого будет вполне достаточно. Но лично мне желательно бы еще тоньше. Прошу понять правильно, это не каприз, а специфика моей нынешней задачи. Поместив отсканированную страницу в программу верстки (InDesign) и точно подобрав оригинальные шрифты, поверх скана я вношу необходимые исправления в текст. Так вот со страницами после Rev.274 впечатанное шрифтом явно отличается от сканированного текста (буквы тоньше). При использовании страницы, которую я приводил в качестве примера обработки в фотошопе, совпадение по толщине букв практически идеальное - смотрится как единый текст.  

Ладно, завтра попробую сделать подстройку порога бинаризации.
 

Цитата:
Попутно еще вопрос. Возможно ли удаление страниц из сохраненного проекта. Например для моего двухстраничного скана: поворачиваю на 90 град., разделяю на отдельные страницы, а затем мне нужно обработать только одну из них. Вторую не нужно ни выравнивать, ни резать - она вообще не нужна.  

Пока - только методом трепанации файла проекта.  Это XML, так что там вполне реально разобраться.  Хотя в данном конкретном случае можно и по другому:
На стадии разрезания переключаетесь в ручной режим (линия разреза останется на месте), потом переключаетесь в режим одностраничного скана с огрызком и при необходимости перекидываете подсвеченную зону на другую сторону от линии разреза.
 

Цитата:
Может быть сделать сетку опорных линий?  

Можно.  Когда не обещаю.  А что, вам попались страницы, где автоматика не справляется?

Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 02:40 08-02-2009
Admig314

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А что, вам попались страницы, где автоматика не справляется?

Вообще-то пока не попадались. Просто подумалось, что ситуация вполне реальна - ну мало ли там по центру страницы какой-нибудь бесформенный рисунок, а по низу одна строчка подписи к нему.
 
Добавлено:
Или не сетку, а пару перпендикулярных, но передвигаемых линий. Ну это когда-нибудь.

Всего записей: 17 | Зарегистр. 19-12-2005 | Отправлено: 03:36 08-02-2009
denver 22

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А что, вам попались страницы, где автоматика не справляется?  

Мне в последних 2-3 книгах стали попадаться. Не исключаю, что ситуация была связана с кривизной самого скана. Точнее именно так и было. Но программа выполнила выравнивание по одним строкам, а на мой взгляд нужно было бы - по другим. Тут-то и пришлось руками исправлять.

Цитата:
Частично это можно решить, увеличив мастштаб просмотра и сдвинув страницу, но все-таки это не очень удобно. Может быть сделать сетку опорных линий?  

+1. Именно в описанном выше случае очень не хватало возможности сместить линю выравнивания вверх/вниз, чтобы вручную выровнять страницу по другим строкам.

Всего записей: 602 | Зарегистр. 28-07-2005 | Отправлено: 09:36 08-02-2009
CrackMe

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Или не сетку

Сетку лучше.
 
Добавлено:
Tulon
Я уже писал про данный недостаток, но не был устранён, поэтому повторю:
Есть изображение 2 страниц, на правой есть помятость из-за которой линия разреза проходит левее корешка.
Как есть, как должно быть.
Исходное изображение.

Всего записей: 710 | Зарегистр. 18-07-2006 | Отправлено: 11:15 08-02-2009 | Исправлено: CrackMe, 11:30 08-02-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107

Компьютерный форум Ru.Board » Компьютеры » Программы » Scan Tailor
Widok (17-02-2010 12:17): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru