Вернуться к разделу "Реализация проекта BookScanLib ".
Эта памятку я написал для всех тех, кто заинтересовался проектом BookScanLib, и хотел бы в нём как-либо поучаствовать, но не знает с чего начать и что, собственно, делать.
Итак, начнём с главного. Прежде всего, Вам потребуется:
1. Желание поучаствовать в проекте. (Это - самое главное. Вы можете иметь лишь это и больше ничего).
2. Периодическое наличие небольшого количества свободного времени.
3. Наличие собственного компьютера дома.
4. Подключение к Интернету - либо дома, либо (у кого есть) на работе.
5. Творческий склад характера.
Вот и всё - этого вполне достаточно. Ничего больше из основного не нужно.
Теперь переходим к конкретным деталям. Я изложу их в виде опросника - чтобы было наиболее понятно.
Обязательно ознакомтесь с сущностью этого формата. Начните с определения формата DjVu в русской Википедии. Обширную дополнительную информацию о формате DjVu можно найти на моём сайте http://www.djvu-soft.narod.ru. Понимание сущности формата DjVu необходимо для понимания сути проекта BookScanLib.
Проект BookScanLib - это открытая общественно-коллективная разработка алгоритмов сканобработки. Что такое "сканобработка" - см. Ликбез по теории и алгоритмам обработки сканов книг. Подобные открытые проекты - обычная мировая практика.
Речь идёт об обычном планшетном сканере. Весьма желательно иметь его дома. Сейчас сканеры стоят недорого - примерно полторы-две тысячи рублей. Я бы посоветовал всем в любом случае приобрести сканер - вещь это нужная, недорогая, и всегда может пригодиться. Информацию о выборе сканера можно найти на этой странице в разделе "Выбор сканера".
Однако, если у Вас нет сканера и Вы не планируете его покупать - не беда - без сканера можно легко обойтись. В Интернете есть очень много DjVu-книг плохого качества - на них вполне можно испытывать будущие алгоритмы BookScanLib.
Если нет - сначала займитесь изучением языка программирования Си. После этого изучите язык программирования Си++. Благо, что в Интернете предостаточно литературы по этим языкам программирования. Купите на местном рынке программный пакет MS Visual Studio .NET (с библиотекой MSDN впридачу), проинсталлируйте его, и попробуйте написать по книгам простейшие программы. Для тех, кто не знает: язык Си++ - это "более развитый" язык Си, обычно их так и обозначают: "C/C++" (по-английски). Знание языка Си (и Си++) автоматически предполагает умение писать консольные приложения - а большего и не требуется для участия в проекте.
Для освоения языков C/C++ достаточно прочитать всего по одной, но хорошей книге - по каждому из этих языков. Я бы рекомендовал всё-таки купить в магазине бумажные книги и по ним заниматься, а не по электронным - скаченным из Интернета - так гораздо удобней (бумажные книги). Да, и не покупайте ни в коем случае бумажную книгу "Язык программирования С++" автор Бьерн Страуструп - это только для суперпродвинутых. И ещё не покупайте бумажную книгу "Язык программирования Си" - авторы Б.Керниган, Д.Ритчи - крайне неудачная книга. Забавно, что обе нерекомендуемые книги написаны самими создателями этих языков программирования.
Я сам учился по прекрасным бумажным книгам "Как программировать на С" и "Как программировать на С++" - авторы Х.М. Дейтел, П.Дж. Дейтел - только я не уверен, что они и сейчас есть в продаже, но в электронном виде они существуют.
Если нет - рекомендую обязательно прочитать. Эта статья - попытка решить проблему неверия в собственные силы (что свойственно очень многим людям) - с позиции науки, именуемой как "психотерапия" (только настоящей, а не шарлатанской, как это обычно водится). Именно эта проблема, а не, скажем, лень, является самым главным препятствием на пути реализации проектов типа BookScanLib.
Прежде всего, ЧИТАТЬ - литературу по компьютерной графике, статьи на эту тему, исходники готовых алгоритмов. Все эти ссылки приведены в Ликбезе по теории и алгоритмам обработки сканов книг. Ознакомьтесь для начала с общей проблематикой программирования растровой графики - не надо спешить сразу что-там начать программировать. Лично я придерживаюсь золотого правила "Тише едешь - дальше будешь" и "магической формулы" больших свершений "Терпенье и труд - всё перетрут" - по-моему, совершенно гениальная фраза - чётко показанный алгоритм успеха в нескольких словах.
Если Вы уже знаете программирование растровой графики - тогда попытайтесь полностью самостоятельно написать программную реализацию какого-либо программного алгоритма из числа указанных в Ликбезе по теории и алгоритмам обработки сканов книг - в рамках Единой Платформы, описанной на главной странице проекта. Попробуйте для начала просто "перебить" под Единую Платформу некоторые чужие алгоритмы с исходниками.
В основу проекта положен "принцип Linux". То есть, это совершенно особая, "антибюрократическая" организационная структура.
Главная движущая сила проекта - это ОБЩАЯ ИДЕЯ - "разработать набор алгоритмов сканобработки". То есть коллективная работа НЕ будет выглядеть так, что, допустим "я раздаю руководящие директивы - а все остальные их выполняют" - как это организовано в любой бюрократической системе. Нет, здесь пусть каждый делает что-либо, что, ПО ЕГО МНЕНИЮ, ведёт к успешному достижению общей идеи - при этом оставаясь в рамках здравого смысла, правил форума проекта, и норм общественной морали.
Моя задача - лишь ПОМОЧЬ всем таким людям своими скромными знаниями, умениями, советами. Я беру на себя лишь функцию КООРДИНАТОРА - того, кто сможет в трудную минуту подсказать, куда идти дальше, того, кто будет за всё отвечать. Эта задача - тяжела и неприятна - ну, я всегда беру на себя самую грязную и противную работёнку - точно зная, что за неё никто больше не возьмётся. :) Если кто-то захочет разделить со мной эту ношу - буду очень рад. Опыт показывает - без координатора подобные проекты практически обречены на провал.
Основные моменты по организационной структуре изложены на главной странице проекта. Здесь я лишь кое-что добавлю.
Я предлагаю "динамическую" структуру проекта. В центре проекта - мой сайт (или сайт какого-либо более активного участника - если таковой появится). Обсуждение проекта ведётся на некоем Интернет-форуме.
Далее я предлагаю практически каждому участнику сделать свой пользовательский сайт - например, на бесплатном хостинге Narod.ru (как у меня). Только хостинг Narod.ru подходит лишь для тех, кто имеет российский IP-адрес (т.е. находится на территории России). Для того, чтобы сделать простейший сайт, необходимо иметь базовые знания по языку разметки Интернет-страниц - HTML. Я могу порекомендовать превосходный вводный курс по языку HTML - "для самых чайников" - с нуля и в простой и понятной форме.
Свой сайт очень удобен для того, чтобы размещать там все плоды своих трудов. Сделать свой сайт - очень просто. На своём сайте каждый из нас - царь и бог, и ни от кого не зависим. Это - наиболее удобная форма участия в проекте для каждого человека. Ведь всем нам совершенно ни к чему, скажем, попадать в зависимость от некоего Интернет-форума - пусть даже и самого лучшего. А если мы будем размещать все свои материалы только на некоем форуме - то, тем самым, попадём к нему в зависимость. Но интересы любого форума вообще-то не тождественны интересам проекта BookScanLib - а завести свой форум (что было бы идеальным решением) я не могу по финансовым причинам.
Так что в идеале мы получим некое "созвездие сайтов", общающихся на некоем форуме. Не понравится нам на одном форуме - перейдём на другой. А не понравиться нам там может по одной-единственной причине - если нас там начнут зажимать - а это может случиться по самым разным причинам, в основе которых лежат человеческие зависть, ревность, жадность, глупость или недоброжелательство. Естественно, легкомысленно скакать с форума на форум мы не станем. А может быть, возникнет необходимость вести обсуждение сразу на нескольких форумах - жизнь покажет.
Собственно, создание библиотеки алгоритмов сканобработки - это лишь побочная цель - как бы странно это ни показалось. А какова же тогда главная цель, спросите Вы?
а). Главная цель проекта BookScanLib - создать "информационное поле" по алгоритмам сканобработки. Проще говоря, нам необходимо хотя бы раскрыть всю эту тематику для людей - а это означает, что самое главное - это НАПИСАТЬ ДОКУМЕНТАЦИЮ по алгоритмам и теории, а не столько сами алгоритмы.
То есть необходимо в первую очередь СОЗДАТЬ УСЛОВИЯ для создания людьми таких алгоритмов - а это значит, что нужно РАССКАЗАТЬ людям обо всей проблематике проекта - путём написания обширного массива ДОКУМЕНТАЦИИ - вот для чего нам всем и потребуются личные сайты - как место для размещения собственных статей по теме проекта.
Причём я бы сказал - нужно не просто рассказать, а скорее, буквально РАЗЖЕВАТЬ людям всю необходимую учебную информацию - доступным языком, с приведением всех нужных Интернет-ссылок, с исходниками учебных алгоритмов и т.д.
Подобное РАССКАЗЫВАНИЕ - это уже само по себе большая работа - именно этим лично я и буду заниматься по крайней мере первое время - и хорошо бы, если кто-то смог бы мне тут составить компанию.
Такое РАССКАЗЫВАНИЕ должно, кроме того, носить характер УПОРЯДОЧИВАНИЯ и СИСТЕМАТИЗАЦИИ разнообразной разрозненной информации, собранной на просторах Интернета - путём увязывания всего этого в некую простую систему. Как образец, я могу привести в пример свой сайт http://www.djvu-soft.narod.ru - казалось бы, это просто табличка, куда я занёс всё, что смог найти в Сети о программах, так или иначе связанных с форматом DjVu - но даже и такая простая систематизация дала огромные плоды - теперь давайте повторим то же самое и в отношении информации о программной работе с растровой графикой плюс дополним это своими статьями.
б). Параллельно с созданием "информационного поля" необходимо будет сделать УЧЕБНЫЕ программные реализации алгоритмов сканобработки - перечисленных в Ликбезе по теории и алгоритмам обработки сканов книг. Не стоит сразу пытаться сделать профессиональные версии алгоритмов - сначала просто учебные реализации - как компонент "информационного поля".
в). И только на самой последней стадии - когда всем участникам (и сторонним посетителям) уже станет ясна вся проблематика - и нужно будет всерьёз заняться написанием именно "профессиональных", т.е. полностью рабочих, финальных версий алгоритмов сканобработки. Лишь на этом этапе мы "будем во всеоружии" для выполнения такой задачи - но не раньше того.
Как видно, наша стратегия получилась трёхступенчатой - словно космическая ракета - и эта аналогия явно не случайна.
Да много чего. И новые знания и умения, и общение с интересными людьми, и высокоинтеллектуально-утончённое развлечение - в виде придумывания алгоритмов. Кроме того - все мы ознакомимся с такими вещами, как "искусственный интеллект" и "распознавание образов" - разве это не интересно, и разве бы у Вас самого (самой) дошли бы руки до этого?
Посмотрите, например, что показывают каждый вечер по телевизору :) - может быть, и вправду лучше вместо телевизора посидеть вечером часок-другой за компьютером и BookScanLib? ;-)
Создайте ПАРАЛЛЕЛЬНЫЙ ПРОЕКТ - например, для Unix, или для Делфи. Ведь один проект невозможно сделать универсальным. Я постараюсь оказать Вашему проекту всяческую информационную поддержку.
Однако, если Вы, скажем, знаете Делфи, а С/С++ не знаете и знать не хотите - Вы всё равно сможете поучаствовать в проекте BookScanLib - пишите алгоритмы на Делфи (или на Java - как умеете, так и пишите) - а кто-нибудь потом "перебьёт" их под Единую Платформу проекта BookScanLib (Win32/С++/FreeImage/VC++). В алгоритмах самое ценное - идея, а не тот язык программирования, на котором они написаны.
Осуществить проект - реальнее, чем Вы думаете. Думаю, ни у кого нет сомнений, что с программированием растровой графики мы справимся легко - там нет ничего сверхъестественного.
Другое дело - искусственный интеллект и распознавание образов - именно в этой области только и можно ожидать каких-то там проблем. Но лично меня тут обнадёживает тот факт, что в Интернете просто море информации по этой проблематике - гораздо больше, чем, например, информации по программированию растровой графики. Поэтому не может быть, чтобы и тут нам вообще ни в чём не удалось разобраться.
По поводу привлечения желающих: собственно, проекту BookScanLib нужно не так уж и много людей - достаточно от 3 до 15 человек. Дело это довольно интересное и нужное, так что шансы привлечь людей - неплохие. Но даже если никто не захочет принять участие в проекте - я сам всё сделаю "от и до" - но это в самом крайнем случае.
Обсудить данную статью можно в ветке форума:
Обсуждение проекта BookScanLib | http://forum.sources.ru/index.php?showtopic=161275 |
Автор: monday2000.
17 декабря 2006 г.
E-Mail (monday2000 [at] yandex.ru)