Ru-Board.club
← Вернуться в раздел «Программы»

» PDF & DjVu Bookmarker

Автор: StanFreeWare
Дата сообщения: 30.11.2009 13:16
Предлагаю принять участие в обсуждении программы Pdf & Djvu Bookmarker, предназначенной для автоматизации процесса создания bookmark-оглавлений в pdf и djvu файлах.
Проект с открытыми исходниками, написан на C# с использованием .NET Framework 2.0.

Страница проекта на SourceForge.net

Скриншоты

Wiki-документация
Автор: pazanru
Дата сообщения: 30.11.2009 14:26
StanFreeWare


Цитата:
Поясните необходимость - это для борьбы с OCR-ошибками в распознавании номеров страниц?


Да, например, но это не обязательно, просто при необходимости изменить нумерации одной страницы, приходится изменять следующую в обратном направлении,
но это в принципе не стоит того, чтобы загромождать интерфейс.


Цитата:
Остался вопрос области применения - к выделенным строкам, ко всем элементам оглавления, к элементам с тем же предком, что и выделенный?


Я бы сказал ко всем элементам, т.к. точки либо есть, либо их нет, за исклучением OCR-ошибок, но это можно и вручную править.


Цитата:
представим оглавление, оканчивающееся следующими строками

3.3.3 заголовок оглавления
эта строка пойдет в 3.3.3
а эта уже не пойдет - это индекс

как мне отличить вторую строку от третьей? Пока что вижу только правку в ручном режиме...
Главное, конечно, не забывать об этой особенности, и не публиковать оглавление с индексом внутри 3.3.3.


Да, их не отличить, но такой случай встречается очень редко,
в 99%, если последний уровень без нумерации, выглядит так:
.
.
3 заголовок оглавления
.
.
3.3 заголовок оглавления
.
.
3.3.3 заголовок оглавления
заголовок оглавления
3.3.4 заголовок оглавления
индекс
Автор: StanFreeWare
Дата сообщения: 30.11.2009 15:01
pazanru
Насчет 99%, думаю, что вы погорячились.
Однако решение есть, хотя и довольно громоздкое. Оно заключается в перечислении через запятую кандидатов на вершину оглавления для каждого из уровней. Только разделитель уровней в виде пробела уже не подходит. Можно заменить его, скажем, тильдой.
И тогда стока для автоматического формирования для вашего случая превратится во что-то вида: #., индекс

Или в более сложных случаях
http://www.onlinedisk.ru/image/281497/Ответы.png
может возникнуть монстр типа
Глава, Ответы~Занятие, Закрепление материала главы, Резюме главы, Основные термины, Упражнения, Рекомендуемые упражнения, Пробный экзамен

Теперь вот думаю, стоит оно того?

Теоретически можно даже попытаться сделать движок для автоматического формирования таких запросов по повторяющимся строкам оглавления. Но, чую, штука получится не слишком банальная..
Автор: monday2000
Дата сообщения: 30.11.2009 16:30
StanFreeWare

Цитата:
Начал свой проектик на SF по автоматизации создания bookmark-оглавления.

ИМХО требования наличия ".NET Fremework 2.0, а также в некоторых случах Visual Studio 2008 SP1 Redistributable Packages" выглядит как неприемлемое.
Также ИМХО неэтично писать в заголовке "DjVu Bookmarker ... by StanFreeWare" - это выпячивание себя любимого на первый план.

Такую программу следует сделать ещё проще:
1. Текст TOC разумно автоматически вытягивать из распознанного DjVu - а не готовить руками.
2.ИМХО наиболее удобно затягивать Текст TOC из п.1. сначала в таблицу вроде Excel - и там править - уже потом в дереве.
3. Инструкция к программе написана непонятно.
Автор: pazanru
Дата сообщения: 30.11.2009 16:40

Цитата:
Оно заключается в перечислении через запятую кандидатов на вершину оглавления для каждого из уровней

Это займёт больше времени чем сдвинуть уровень вручную


Цитата:
Или в более сложных случаях

мда , в таких случаях наверно легче ручками

А что если ввести альтернативный постоянный маркер уровней?
например строка
_Пробный экзамен
автоматически на первый уровень
__Подписывание и шифрование сообшений
на второй и.т.д.
В html эти знаки конечно же не пишутся.

При вынимании текстового слоя оглавления приходится ведь в любом случае просматривать результат, заодно можно и уровни расставить если требуется.
Автор: StanFreeWare
Дата сообщения: 30.11.2009 18:30
monday2000

Цитата:
выглядит как неприемлемое

IMHO, не более неприемлемое, чем необходимость устанавливать Excel или Adobe Acrobat, как предлагают некоторые альтернативные методики. Кстати, а вам пришлось устанавливать Redistributable Packages?
Возможно, если полезность проекта подтвердится, попытаюсь переписать на том же QT (правда, для этого мне придется его сначала изучить).

Цитата:
неэтично писать

А что этично писать? Я недавно в opensource, просветите. Честно говоря, абсолютно безымянные проекты, последнюю версию которых можно получить только по почте у автора (и это еще хорошо, когда указана почта) - тоже не вариант. Даже к ST просится хотя бы ссылка на офсайт...

Цитата:
Текст TOC разумно автоматически вытягивать из распознанного DjVu

У меня даже на достаточно хорошем исходнике FR наделал немного, но достаточно ошибок, чтобы об автоматическом вытягивании не было и речи. К тому же, открыть djvu, выделить оглавление и вставить его в текстовый режим IMHO, вполне себе простая и понятная операция. Не намного сложнее, если не проще, чем указать на djvu-файл и проставить номера страниц начала и конца его оглавления. Я сейчас не говорю об абсолютно корректных вычитанных djvu - я таких пока не встречал..

Цитата:
ИМХО наиболее удобно затягивать Текст TOC из п.1. сначала в таблицу вроде Excel - и там править - уже потом в дереве

А я и не предлагаю оглавление ПОЛНОСТЬЮ править в дереве. Я лишь даю возможность вносить небольшие поправки в случае, если предварительная подготовка в текстовом редакторе оставила недочеты.

Цитата:
Инструкция к программе написана непонятно

Зато она есть. И вы сразу поняли из нее, например, про фреймворк. Но, конечно, в таком виде она останется недолго. В ближайшем будущем постараюсь написать попонятнее.


Добавлено:
pazanru

Цитата:
Это займёт больше времени чем сдвинуть уровень вручную

Возможно, но ошибок, по-идее, должно получиться меньше.

Цитата:
заодно можно и уровни расставить если требуется.

Ну, заодно тогда можно будет и тегами окружить... и мне работы не останется )

Добавлено:
Выпустил версию 0.6 с чисткой шума распознавания при вставке текста.
Автор: NME
Дата сообщения: 30.11.2009 23:25

Цитата:
Выпустил версию 0.6 с чисткой шума распознавания при вставке текста.

я так понял, что вставляться должен "почищенный" в стороннем редакторе текст, и весь шум д.б. удален там.. ИМХО здесь - это уже перебор (тем более, как было написано ранее - "игрушка опасная")..
StanFreeWare, наверное не стОит сгоряча реализовывать абсолютно все предложения.. м.б. некоторые из них отсеивать, а время тратить на реализацию более актуальных предложений и своих задумок..


Добавлено:
и еще вопрос, отчего в первом посте у вас ссылки на хттпс? при входе в документацию предлагает логиниться.. приходится вручную "с" удалять..
Автор: StanFreeWare
Дата сообщения: 01.12.2009 05:53

Цитата:
приходится вручную "с" удалять..

Спасибо, поправил. Я-то уже залогинен был, когда ссылки копировал )

Цитата:
время тратить на реализацию более актуальных предложений и своих задумок..

Так предлагайте.

У меня из задумок пока что только кнопка Expand All, ну и перечисление элементов оглавления через запятую. По перечислению вроде бы пока что решили, что штука дюже сложная может получиться для пользователя? Или все-таки достаточно удобно будет?

А отсев шума можно и не производить. Достаточно в окне шумодаванажать на кнопку "Оставить все".
Вы его попробовали?

Вопрос к спецам
Насколько мне известно, Bookmark Tool 2.0 не имеет командной строки.
Как еще можно внедрить html непосредственно в djvu?
Желательно в виде ссылки на exeшник утилиты и рабочий batник с командой внедрения.

Добавлено:
Придумал еще одну полезную фичу - возможность загрузить экспортированный html обратно.
Автор: monday2000
Дата сообщения: 01.12.2009 08:21
StanFreeWare

Цитата:
попытаюсь переписать на том же QT

Отличная мысль.

Цитата:
А что этично писать?

Напишите просто название программы - без "by такой-то".

Цитата:
У меня даже на достаточно хорошем исходнике FR наделал немного, но достаточно ошибок, чтобы об автоматическом вытягивании не было и речи.

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

Цитата:
IMHO, не более неприемлемое, чем необходимость устанавливать Excel или Adobe Acrobat,

Я тоже так думаю. Я имел в виду, чтобы в своей программе реализовать элемент управления, внешне (и по поведению) схожий с Excel.


Добавлено:
StanFreeWare

Цитата:
Насколько мне известно, Bookmark Tool 2.0 не имеет командной строки.
Как еще можно внедрить html непосредственно в djvu?

Я бы вообще не заморачивался с Bookmark Tool - а внедрял бы букмарки при помощи djvused. В DjVuLibre есть библиотека MiniExp http://www.djvu-soft.narod.ru/miniexp.htm - по-видимому, с её помощью можно формировать входные данные для djvused. Bookmark Tool - это ИМХО как-то уж экзотично (хотя дело вкуса).
Автор: VadimirTT
Дата сообщения: 01.12.2009 09:02
StanFreeWare
Спасибо за прогу.
Побаловался, что-то получилось Математическое моделирование нелинейных термогидрогазодинамических процессов в многокомпонентных струйных течениях
Я за то чтобы программу отшлифовать, юзабилити там, всплывающие подсказки, может быть мастер.
з.ы. но все равно, как то лениво делать для всех книг по этому алгоритму, может быть будет возможно (после того как Bookmark Tool прикрутите) как это в DjVuHypEdit сделано (просто указал книгу с текстовым слоем... и там, оно как то само ), тогда и чистка от мусора реально пригодится.
Автор: StanFreeWare
Дата сообщения: 01.12.2009 09:06
monday2000


Цитата:
Я имел в виду, чтобы в своей программе реализовать элемент управления, внешне (и по поведению) схожий с Excel

Зачем заводить еще и таблицу, чтобы править иерархию. Раз делаем иерархию, то и правим иерархию. Логично?

Цитата:
по-видимому, с её помощью можно формировать входные данные для djvused.

Я уже потратил кучу времени, пытаясь понять, как скармливать djvused'у оглавления. Пока безрезультатно. Поэтому прошу тех, у кого это РЕАЛЬНО получилось, дать ссылку на djvused, на котором получилось, и показать содержимое bat-ника и сам html-файл (а лучше ссылку на оба файла). Возможно, дело в кодировке - Bookmark Tool, например, требует UTF-8, а что требует djvused, никто не говорит.

Цитата:
Не путайте с автоматическим формированием

Тогда я, видимо, не понял вашу мысль. Пожалуйста, конкретизируйте, что вы имели в виду под процессом "вытягивания".


Добавлено:
VadimirTT

Выкладывайте результаты лучше через onlinedisk, с вашим файлообменником у меня не сраслось.


Цитата:
оно как то само

Ну никак не получится еще на этапе определения номеров бумажных страниц, пока на выходе ФР будет вместо номера страницы "10" будут получаться "Ю". И тут уже или вычитывать все оглавление перед внедрением OCR в djvu-книгу, либо не вычитывать, а править уже вручную на этапе работы с djvu bookmarker. И еще вопрос - чтО будет проще.. Так что для меня вообще-то загадка, как оно работает у DjVuHypEdit'a.
Боюсь, что любой результат подобной автоматики потом придется открывать в DjVu Editore и править, править...


Цитата:
юзабилити там

Жду конкретных предложений. Всплывающие подсказки - будут.
Автор: monday2000
Дата сообщения: 01.12.2009 15:30
StanFreeWare

Цитата:
а что требует djvused, никто не говорит.

Да возьмите любой DjVu с внедрённым OCR, и извлеките оттуда текстовый слой посредством djvused - вот Вам будет и пример.

Цитата:
Зачем заводить еще и таблицу, чтобы править иерархию. Раз делаем иерархию, то и правим иерархию.

С этим трудно спорить - дело вкуса. Конечно, в дереве всё это выглядит полностью наглядно, зато в таблице а-ля Excel ИМХО проще и быстрее делать правки прототипа будущего дерева. Колонками таблицы можно обозначать уровни вложенности будующего дерева. Номера страниц, естественно, тоже в отдельные колонки помещать.

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

Цитата:
Пожалуйста, конкретизируйте, что вы имели в виду под процессом "вытягивания".

Извлечение текстового слоя посредством djvused.
Автор: StanFreeWare
Дата сообщения: 01.12.2009 18:56
monday2000
Интересно, при запросе Djvu Bookmarker в гугле ваш пост о моей неэтичности находится раньше чем ссылка на sourceforge. Спасибо за черный пиар! ))

Цитата:
Да возьмите любой DjVu

Цитата:
и извлеките

У вас получалось? А потом назад прикрутить? Где именно брали djvused и какой именно строкой прикручивали/извлекали?
Автор: NME
Дата сообщения: 01.12.2009 21:14
StanFreeWare
1. сначала по поводу букмарков, гиперлинков и т.п.. сразу оговорюсь, что все нижесказанное является лишь моим скромным мнением, так что просьба помидорами не закидывать .. и еще.. речь пойдет преимущественно о технической литературе, т.к. в основном с такой приходится работать..
основным инструментом навигации по djvu-книге являются все-таки гиперлинки (обязательно на распознанном тексте).. и книга должна быть распознана НЕ ПОЛНОСТЬЮ!, а только оглавление, предметный указатель и, может быть, еще что-то (в основном то, где есть ссылки на страницы).. иначе придется долго добираться до нужного содержимого..
исключение составляют словари, энциклопедии и им подобные.. возможно, если в книге нет предметного (алфавитного) указателя, то такую книгу тоже можно будет полностью распознать..
а порядок работы с книгой такой - в поиске набрал нужное слово, перешел на первый результат поиска, а он с гиперссылкой - кликнул на нее - и нашел то, что искал.. если же нет - клик по второму результату поиска и т.д.. таким способом довольно-таки быстро добираешься до нужной информации..
букмарки же дают не более 20% функциональности по сравнению с гиперлинками.. хотя, если AndyZ введет в своей программе возможность поиска по букмаркам, процент значительно возрастет.. а для словарей и т.п. вообще станет мощным средством навигации, наряду с OCR слоем..
но, т.к. проект DjVu Hyperlinks Editor заброшен, а проект DjVu Bookmarker набирает обороты, то я всецело поддерживаю автора в его начинании..

2. по поводу программы..
при запуске появляется сообщение об ошибке.. [more=скрин] [/more] [more=лог]Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
в DjvuBookmarker._form._form_ResizeEnd(Object sender, EventArgs e) в D:\MyDocs\Visual Studio 2008\Projects\DjvuAutoBookmark\DjvuAutoBookmark\MainForm.cs:строка 517
в System.Windows.Forms.Control.OnSizeChanged(EventArgs e)
в System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
в System.Windows.Forms.Control.UpdateBounds()
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Загруженные сборки **************
mscorlib
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
DjvuBookmarker
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///D:/Users/Vitaly/!!!проги/2/DjvuAutoBookmark/DjvuAutoBookmark/bin/Release/DjvuBookmarker.exe
----------------------------------------
System.Windows.Forms
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Aga.Controls
Версия сборки: 1.7.0.0
Версия Win32: 1.7.0.0
CodeBase: file:///D:/Users/Vitaly/!!!проги/2/DjvuAutoBookmark/DjvuAutoBookmark/bin/Release/Aga.Controls.DLL
----------------------------------------
mscorlib.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
Версия сборки: 2.0.0.0
Версия Win32: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

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


[/more] система Виста х64 СП2.. на виртуальной машине с ХР СП3 [more=лог чуть отличается]See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at DjvuBookmarker._form._form_ResizeEnd(Object sender, EventArgs e) in D:\MyDocs\Visual Studio 2008\Projects\DjvuAutoBookmark\DjvuAutoBookmark\MainForm.cs:line 517
at DjvuBookmarker._form._form_SizeChanged(Object sender, EventArgs e) in D:\MyDocs\Visual Studio 2008\Projects\DjvuAutoBookmark\DjvuAutoBookmark\MainForm.cs:line 668
at System.Windows.Forms.Control.OnSizeChanged(EventArgs e)
at System.Windows.Forms.Control.UpdateBounds(Int32 x, Int32 y, Int32 width, Int32 height, Int32 clientWidth, Int32 clientHeight)
at System.Windows.Forms.Control.UpdateBounds()
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
DjvuBookmarker
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///F:/DjvuAutoBookmark/DjvuAutoBookmark/bin/Release/DjvuBookmarker.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Aga.Controls
Assembly Version: 1.7.0.0
Win32 Version: 1.7.0.0
CodeBase: file:///F:/DjvuAutoBookmark/DjvuAutoBookmark/bin/Release/Aga.Controls.DLL
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.


[/more]
попробовал сейчас на Висте х86 - те же яйца.. причем трабла на версиях 0.5 и 0.6.1.. на 0.4 не ругается.. кста, на Висте х64 была установлена Microsoft Visual Studio 2008 Professional с первым сервиспаком.. вообще, строчка D:\MyDocs.. как-то настораживает

3.
Цитата:
Достаточно в окне шумодаванажать на кнопку "Оставить все".
Вы его попробовали?

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

4. предложения по улучшению программы есть.. и их довольно-таки много.. завтра вечерком выложу все свои мысли по этому поводу.. думаю, в итоге (если, конечно, не пропадет энтузазизм) хорошая и главное востребованная прога получится..
Автор: VadimirTT
Дата сообщения: 01.12.2009 21:35
При старте тоже, ошибка. но продолжать работу не мешает, также подобное было и в процессе


1. Хотелось бы, что бы переключался фокус мыши автоматом, т.е. я что-то делаю вне поля с оглавлением, а затем перевожу указатель мышки на оглавление и начинаю прокручивать колеса - прокрутка не работает, т.е. надо в оглавление тыкнуть, лишнее движение, лично меня напрягает
2. нет undo
3. Вы упоминули об экспорте html-ки - это типа сохранения проекта? было бы здорово
4. сделал еще одну книгу со сложным оглавлением, получается много ручного труда Материалы для низких и криогенных температур: Энциклопедический справочник
5. может было бы нагляднее вводить руками общий сдвиг нумерации, помимо стрелочек?

насчет приставания monday2000 с именем, не понял наезда , чисто-пуризм какойто, единственно, потенциально это может отпугнуть человека который мог бы помочь с кодированием или передачей какого нибудь алгоритма
Автор: monday2000
Дата сообщения: 01.12.2009 21:42
StanFreeWare

Цитата:
ваш пост о моей неэтичности находится раньше чем ссылка на sourceforge.

Да, мне тоже смешно. Ничего, это ненадолго.

Цитата:
У вас получалось? А потом назад прикрутить?

Да многократно. Кстати, я это не сам придумал - мне кто-то посоветовал в своё время. Вот почитайте: http://djvu.sourceforge.net/doc/man/djvused.html#lbAJ
Сначала делаете так:

Цитата:
djvused myfile.djvu -e 'output-txt' > myfile.dsed

где myfile.djvu - любой DjVu-файл с распознанным OCR-слоем.
Вставка OCR-слоя назад:

Цитата:
djvused myfile.djvu -f myfile.dsed -s

Правда, у меня часто глючили эти команды. Если будут глюки - пробуйте кавычки вместо апострофов.

Цитата:
Где именно брали djvused

Возьмите из DjVuOCR последнего.
Автор: StanFreeWare
Дата сообщения: 01.12.2009 22:31
В ближайшее время переделаю интерфейс и немного порефакторю - думаю, будет одна полоса сверху, как у AcrobatReader, а все остальное пространство - это иерархия и предпросмотр картинки, разделенные сплитбаром.

Ошибка при старте связана с ресайзом - она 100% уйдет.

VadimirTT

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

Возможно так и сделаю.

Еще бы как-нибудь иконки навигации позаимствовать у Adobe Reader. Сам я так, пожалуй, не нарисую...

Добавлено:

Цитата:
что-то получилось

Вообще-то нужно переделывать. По-хорошему, вы должны были заголовки раздела во внешнем редакторе склеить с самим словом Раздел i, и уже потом добавлять номер страницы.
В принципе, можно попробовать добавить опцию "Допускать отсутствие номера страницы по шаблону" с автоматическим присвоением номера страницы по следующему элементу списка, т.к. такие "безадресные" разделы мне тоже периодически попадались.

С многострочными элеметами, разделенными номерами страниц, тоже хлебнули проблем..

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

Речь идет о таком оглавлении -
см. скриншот
Автор: StanFreeWare
Дата сообщения: 02.12.2009 09:24
monday2000
Спасибо, кое-что начинает проясняться. Я просто считал, что djvused'y можно html скормить - а у него, оказывается, своя, "скобчатая" нотация...

Добавлено:
Теперь подскажите, что это за кодировка, в которой
"\321\200\320\260\320\267\320\274\320\265\321\200\320\260 "
переводится как
"размера"?
Автор: NME
Дата сообщения: 02.12.2009 17:43
а теперь, собственно, предложения..
1. раз уж заговорил по поводу менюхи фильтрации шума распознания, начну с нее.. количество кнопок выбора действия - избыточное.. после выбора удаляемых символов приходится выискивать и целиться в кнопку "удалить выбранные"..
наиболее логичным было бы оставить 2 кнопки "удалить" и "отмена", а над (или под) окном с чекбоксами для удобства добавить кнопки "выделить все" и "снять выделение"..

2. также в этом окне знаки [Tab] не отображаются (т.е. чекбокс без подписи).. эти знаки предлагаю вообще во всем документе автоматом заменять пробелами, т.к. в букмарках они совершенно не нужны (а может даже и вредны).. и, соответственно, в меню фильтрации его не должно быть..
и, кстати, программа запоминает и предлагает установить галочки на ранее вводимый мусор, которого при данной вставке уже нет.. надо бы пофиксить..

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

4. также в распознанном тексте оказалось много двойных пробелов.. в принципе, в том же ворде можно достаточно легко заменить двойные и более пробелы на одинарные (табы из п.2 кстати тоже), но т.к. в конечном счете надо будет отказываться от сторонних редакторов (вот тут идут разговоры об извлечении OCR-слоя непосредственно из djvu) наверное стоит предусмотреть данную фичу в программе..

5. после вставки оглавления в программу и частичного редактирования вложенности веток напоролся на строку следующего содержания ["имя первого пункта" "страница" "имя второго пункта"].. т.е. получилось, что я пропустил знак переноса строки и два пункта объединились в один.. но половина оглавления-то уже отредактирована! вот тут появилась необходимость разделения пункта на 2.. а точнее так - возможность добавлять вручную новые пункты оглавления (например, по ПКМ -> Добавить строки сверху, Добавить строки снизу).. правда ПКМ на данный момент уже задействована, но об этом ниже..

6. в дополнение к п.5 - возможность добавлять по ПКМ строки без ссылки на страницу.. причем, если в памяти несколько строк, то должно появиться несколько пунктов, объединения как в п.3 происходить не должно..

7. после каждой операции сдвига веток дерево полностью раскрывается.. блин, бесит ужасно надо чтоб запоминалась текущее состояние веток.. ну, и кнопки развернуть/свернуть дерево полностью тоже нужны (или развернуть/свернуть закладки верхнего уровня - как в WinDjvu)..

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

9. баг.. в версии 0.6.1 по-умолчанию строке "Оглавление" присваивается ссылка на первую страницу книги, а все остальные смещаются на 1 позицию.. а надо, чтоб изначально было 0.. и вообще, эта строка сейчас является лишней.. для того, чтоб она не была "лишней" нужно добавить возможность присвоения ей ссылки на любую страницу (т.е. на страницу с оглавлением в djvu-книге)..

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

11. сдвиг веток вправо мышкой нужно изменить с ПКМ на ЛКМ+ПКМ, тогда ПКМ освобождается для вывода дополнительного меню, в котором можно будет добавить пункты для операций со строкой (редактировать, изменить номер страницы перехода, добавление строк (см.п.5) и т.д.)..
а сдвиг влево соответственно ПКМ+ЛКМ.. для тех, кто юзает оперу данные сочетания клавиш мыши очень знакомы

12. также предусмотреть возможность сдвига мышой не только выбранной строки, но и всех нижележащих строк в данной редактируемой подветке (чтоб не приходилось каждый раз выделять с шифтом данные пункты).. осуществлять это также, как в п.11 с дополнительной клавишей, например 'Ctrl'.. реализация этого и предыдущего пункта должны офигенно сократить время формирования веток дерева, так что об экселе можно будет забыть напрочь))

13. поддержку просмотра формата djvu надо осуществлять обязательно.. тифы - это всего лишь костыли.. перегонять djvu в tiff, уменьшать размер и т.п. будет осуществлять далеко не каждый.. знаю, что проблема известная, но решил еще раз ее обозначить, т.к. она очень значимая..

14. внедрять букмарки непосредственно в книгу, минуя Bookmark Tool.. тем более уже понятно, как это делась.. а выявить соответствие кириллических букв цифровым кодам - дело несложное.. даже не стоит выяснять, что это за кодировка - просто назначить прямое соответствие между ними..

15. ну и косметические нововведения - иконку придумать, свойства exe-шника заполнить (версия программы, автор и т.п.) и т.д..

16. если будет желание, в будущем можно сделать из программы полноценный редактор - на входе djvu с OCR, на выходе djvu с bookmarks..
а если еще сильнее загоняться - на вход подавать чистый djvu без OCR-слоя, а распознание текста проводить в букмаркере на основе бесплатных распознавалок но это уже из разряда фантастики)) и наврядли это целесообразно делать..

на этом пока все.. если где-то не до конца ясна мысль предложения - готов прокомментировать..
Автор: StanFreeWare
Дата сообщения: 02.12.2009 19:10
NME
Большое спасибо за подробный отчет.
Поддержку просмотра djvu.. Хорошо бы, но боюсь, это только коллективным разумом. По крайней мере, я пока что подхода к такому просмотру даже близко не вижу.
Автор: monday2000
Дата сообщения: 03.12.2009 17:00
StanFreeWare

Цитата:
своя, "скобчатая" нотация...

Есть такой язык программирования - Lisp. Это выражения на языке Lisp. В DjVuLibre есть модуль http://www.djvu-soft.narod.ru/miniexp.htm для работы с этими выражениями.

Цитата:
Теперь подскажите, что это за кодировка

Возможно, восьмеричные коды. См. http://www.djvu-soft.narod.ru/opendjvu/ пункт "Утилиты из пакета djvulibre".
Автор: StanFreeWare
Дата сообщения: 03.12.2009 23:22
Выложил на sourceforge версию 0.7.
На вики - перечень изменений.
Изменений много, ошибиться было где,
так что жду ваших отчетов.


Цитата:
Возможно, восьмеричные коды.

Похоже на то.
Подсунул строку декодеру Артемия Лебедева - декодер спасовал..
Автор: monday2000
Дата сообщения: 04.12.2009 08:05
StanFreeWare

Цитата:
Подсунул строку декодеру Артемия Лебедева - декодер спасовал..

Я думаю - почитайте ещё раз внимательно http://djvu.sourceforge.net/doc/man/djvused.html .

Вполне вероятно, что нужно будет модифицировать исходники djvused.

Добавлено:

Цитата:
Поддержку просмотра djvu.. Хорошо бы, но боюсь, это только коллективным разумом.

Я Вашу программу не смотрел - у Вас там что, TIF'ы отображаются? Если да, то тогда полдела уже сделано. Остаётся только подать в программу не TIF, а вывод с ddjvu http://djvu.sourceforge.net/doc/man/ddjvu.html . См. также официальное программное описание библиотеки DjVuLibre http://www.djvu-soft.narod.ru/ddjvuapi.htm .

DjVuLibre - это ведь программная библиотека, а все консольные утилиты DjVuLibre в той или иной мере вызывают внутри себя функции этой библиотеки, т.е. можно сделать свой код, который будет вызывать внутри себя функции этой библиотеки. Примерно так работает, скажем, WinDjView.

Добавлено:
NME

Цитата:
а если еще сильнее загоняться - на вход подавать чистый djvu без OCR-слоя, а распознание текста проводить в букмаркере на основе бесплатных распознавалок но это уже из разряда фантастики

В принципе, это не так уж нереально - например, на базе CuneiForm. Правда, ФайнРидер наверняка мощнее - да и точность распознавания в этом случае нужна как можно больше.

Всё-таки легче заранее во всю DjVu-книгу вставлять OCR-слой - в уже на его основе делать дерево-оглавление.
Автор: StanFreeWare
Дата сообщения: 04.12.2009 16:39
0.8 Release Candidat 1

http://www.onlinedisk.ru/file/284888/

Добавлено сохранение в html.
Заодно пришлось поменять внутреннюю концепцию хранения номеров djvu-страниц.

Exeшник для запуска - в папке bin\debug
Автор: VadimirTT
Дата сообщения: 04.12.2009 19:31
К вопросу о том какие извращенные бывают стили оглавления - Общая химическая технология. Под ред. И.Э. Фурмер
делал еще 0.6 версией
Автор: NME
Дата сообщения: 04.12.2009 19:49
monday2000

Цитата:
это не так уж нереально - например, на базе CuneiForm

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

StanFreeWare
очередная порция предложений.. надеюсь, еще не надоел?

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

2. неплохо было бы если б прога определяла автоматом подуровни типа "Глава 1", "Глава 1.1", "Глава 1.1.1".. хотя бы только цифровые..

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

4. при наведении курсора на длинную строку (выходящую по ширине за границу окошка дерева) можно сделать всплывающее окно с отображением полного текста..

5. по поводу tif-страниц.. сделать режим, в котором была бы независимая навигация от выбираемых в дереве пунктов.. пример: я устанавливаю данный режим, выбираю нужную страницу с оглавлением и правлю вложенность веток в глядя на картинку..
масштабирование тоже при желании можно предусмотреть..

6. сделать так, чтоб при выборе папки с tif-страницами запоминался последний выбранный каталог..

7. сейчас можно сделать так - выделить с контролом в одной подветке разные пункты (не стоящие рядом) и применить к ним сдвиг.. т.е. можно выбрать все "второстепенные" подпункты и сдвинуть их вправо.. а удобнее было бы аналогичным способом выделить "подзаголовки" и, например, кнопкой это указать.. при этом выделенные пункты остаются на месте, а остальные (от первого выбранного пункта и ниже до конца подветки) смещались бы вправо..
честно говоря, сейчас практически то же самое можно сделать так - выделить "подзаголовки" через контрол, сначала нажать ПКМ+ЛКМ (сдвинуть влево), затем снова их выделить и нажать ЛКМ+ПКМ.. требуемый результат будет достигнут..

8. прошлый раз писал про удобство выделения строки для редактирования одинарным или двойным кликом.. вот сейчас поработал подольше и пришел к выводу, что даблклик будет наверное поудобнее, т.к. сейчас очень часто происходит непроизвольный переход в режим редактирования строки.. а заголовки (которые при даблклике открывают подветку) редактировать по Ф2 и менюхе, выпадающей по ПКМ (если такая все-таки будет)..

з.ы. тестировал версию 0.7..
з.ы.ы. репорт по багам отправлю в ПМ..
Автор: StanFreeWare
Дата сообщения: 04.12.2009 19:52
VadimirTT
Да.. Здесь без ворда, думаю никак не обойтись.
Один плюс - всего на полторы стронички..
Кстати, у вас 14 глава не на месте.
Автор: StanFreeWare
Дата сообщения: 05.12.2009 05:01
NME
Еще как не надоели )
Благодарю за предложения, и особо за баг лист.
Отдельное спасибо за отсутствие черного пиара, т.е. за то, что баг-лист передавался через личку. Кое-что уже поправил в 8rc1. С выделением буду разбираться.

Для выделения глав вручную сейчас удобно делать так:
встаете на строчку ниже после первой главы, нажимаете ctlr + ->
потом выделяете с контролом остальные главы, нажимаете <-

Про модификаторы для сдвига напишу в хелпе поподробнее.
Пока отмечу, что модель такая (работает если выбрана только одна строчка):
ctlr - сдвиг текущей и всех ниже
shift - сдвиг текущей и всех выше
ctrl+shift - сдвиг и выше и ниже.
логика выбора клавиш понятна - ctrl на клавиатуре ниже, а shift - выше.

Была мысль shif и ctrl+shift поменять местами, там тоже была бы своя логика. Но выбранная пока мне кажется логичнее.




Добавлено:

0.8rc2
http://www.onlinedisk.ru/file/285307/

Постарался исправить баги, выловленные NME

Сдвиг с клавиатуры теперь не Ctrl+ стрелочки, а Alt + стрелочки.

плюс добавилась фича


Цитата:
5.  по поводу tif-страниц.. сделать режим, в котором была бы независимая навигация от выбираемых в дереве пунктов.. пример: я устанавливаю данный режим, выбираю нужную страницу с оглавлением и правлю вложенность веток в глядя на картинку..

Автор: Melirius
Дата сообщения: 05.12.2009 16:32
А можно добавить постоянный сдвиг номеров страниц относительно картинок? Я, например, всегда обрабатываю обложку отдельно, и только потом вставляю в книгу, потому придётся все номера страниц в djvu сдвигать на 1, что в нынешнем варианте неудобно.

По поводу просмотра djvu - можно, наверное, воспользоваться открытым декодером из DjVuLibre. Или по рабоче-крестьянски прикрутить отображение раскодируемого ихним exe-декодером в tiff изображения.
Автор: StanFreeWare
Дата сообщения: 05.12.2009 16:56
Melirius
Уже в текущих версиях возможно два варианта -
1) временно положить в папку с tifками файлик, например !заголовок.tif чтобы сортировался первым.
2) редактировать в нормальном режиме, а перед сохранением поставить курсор на первый элемент и сдвинуть все на страницу вниз.
Думаю, это не настолько неудобно.
Даже если забудете сдвинуть, всегда есть возможность открыть и сдвинуть потом...

Добавлено:
0.8rc3
http://www.onlinedisk.ru/file/285715/

Новых фич не добавлял. Разбирался с глюками rc2

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: Нужна бесплатная альтернатива Acronic


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.