Автор Тема: CuneiForm для DjVu  (Прочитано 39475 раз)

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #60 : 03 ґХЪРСам 2010, 11:48:06 »
Мне удалось подправить djvused. Исправленная версия залита на старое место:

http://www.djvu-soft.narod.ru/soft/djvused.rar  (262 КБ)

Я случайно натолкнулся на то место, которое, как мне кажется, и порождало этот баг. Это исправление 1.23 в DjVuDocEditor.cpp :

http://djvu.cvs.sourceforge.net/viewvc/djvu/djvulibre-3.5/libdjvu/DjVuDocEditor.cpp?view=log

Ещё я обнаружил, что Леон Боту позавчера внёс добавление в djvused - добавил туда поддержку XMP-метаданных:

http://djvu.cvs.sourceforge.net/viewvc/djvu/djvulibre-3.5/tools/djvused.cpp?view=log исправление 1.44.

Так что я заодно внёс в djvused и это исправление. В djvused добавились следующие команды:

Цитировать
print-xmp              -- print xmp annotations
set-xmp [<xmpfile>]    -- copies <xmpfile> into the xmp metadata annotation tag
remove-xmp             -- removes xmp metadata from annotation chunk

И изменилась команда set-meta [<metafile>]. Была такой:

Цитировать
set-meta [<metafile>]  -- copies <metafile> into the metadata part of the annotations

а стала такой:

Цитировать
set-meta [<metafile>]  -- copies <metafile> into the metadata annotation tag

Интересно, в чём смысл такого изменения?

То, что Леон добавил поддержку XMP-метаданных в djvused - весьма примечательно. Это довольно серьёзный и значимый шаг. Однако, непонятно - почему он это сделал? Дело в том, что XMP-метаданные не описываются спецификацией DjVu. И ни один Caminova-продукт вроде бы тоже не поддерживает пока XMP-метаданные. Вот PDF Doc Info метаданные уже поддерживаются в DjVu Shell Extension Pack от Caminova (хотя официально PDF Doc Info метаданные тоже не описываются спецификацией DjVu, как и вообще любые другие метаданные).

Вообще в спецификации DjVu термин "metadata" встречается лишь один раз:
Цитировать
7.1.3.4 Annotations and Textual Information

All types of DjVu images may contain annotation chunks. Annotation chunks are used to
describe hyperlinks, to specify more viewer settings (page background, initial zoom, etc),
and to hold metadata information. Annotations are contained in “ANTa” or “ANTz” chunks.

All types of DjVu image files may also contain a computer readable description of the
text appearing on the page. This information is contained by either a “TXTa” chunk or
“TXTz”
И всё - и никаких больше подробностей по поводу того, какие именно метаданные, в каком формате, и т.п.

Либо Леон уже кулуарно договорился с Caminova о том, что и они будут поддерживать XMP-метаданные, либо решил наплевать на Caminova, и всё равно сделать поддержку XMP.

Оба варианта хороши для нас, но первый лучше, конечно. Попробую расспросить Леона.

Кстати, я как раз на днях общался с Леоном по поводу метаданных, и спрашивал его по поводу поддержки XMP-метаданных, сказал ему что планирую сделать GUI для работы с DjVu-метаданными. Может, поэтому у него и возник интерес к этой теме.
« Последнее редактирование: 03 ґХЪРСам 2010, 12:01:28 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #61 : 03 ґХЪРСам 2010, 15:33:48 »
Файл http://www.djvu-soft.narod.ru/soft/djvused.rar обновлён ещё раз (я не заметил изначально, что добавление XMP задело и другие модули DjVuLibre - сейчас это подправил в своём экзешнике).

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #62 : 03 ґХЪРСам 2010, 15:58:07 »
Леон Боту прислал мне письмо с некоторыми ответами. Про XMP - я спрашивал его, почему он сделал его, неужели Caminova реализовала XMP тоже?
Цитировать
No. But that was a feature request that was simple enough to do.  It also allowed me to fix a couple bugs.
То есть, Леон это сделал не обращая внимание на Caminova - что довольно любопытно. Молодец, XMP очень даже пригодится в DjVu. Это значит, что даже Леон уже созрел не обращать на этих .... неправильных хозяев DjVu слишком много внимания. :)
И ещё Леон пообещал чуть позже подправить 2 простых бага в djvutoxml, o которых я писал ранее.

N.M.E.

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: CuneiForm для DjVu
« Ответ #63 : 03 ґХЪРСам 2010, 19:04:43 »
monday2000
Цитировать
Синтаксис поддерживается одинаковый
я имел ввиду вывод информации в файл.. в 3.5.23b добавлена инфа о номере страницы
Цитировать
  FORM:DJVM [5294]
    DIRM [29]         Document directory (bundled, 1 files 1 pages)
    FORM:DJVU [5244] {BC65~1.DJV} [P1]
      INFO [10]         DjVu 1728x2590, v25, 300 dpi, gamma=2.2
      Sjbz [5104]       JB2 bilevel data
      ANTz [102]        Page annotation (hyperlinks, etc.)

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #64 : 05 ґХЪРСам 2010, 13:09:55 »
N.M.E.
Цитировать
3.5.23b добавлена инфа о номере страницы
Посмотрю в ближайшее время. А что это за версия "3.5.23b" - что значит "b"? Где её взять?

Леон Боту исправил найденные мною глюки в djvutoxml. Вот его ответ:
Цитировать
Yes. The code of djvutoxml is horrible. Done now.
Вот главное исправление:
http://djvu.cvs.sourceforge.net/viewvc/djvu/djvulibre-3.5/xmltools/djvutoxml.cpp?r1=1.9&r2=1.10
Я ему ещё сказал, что хорошо бы перевести DjVuLibre на CMake. Вот его ответ:
Цитировать
Cmake works well but I do not have time for that.
И ещё я спросил его - почему он реализовал поддержку XMP в DjVuLibre - а что если Caminova никогда в будущем не сделает то же самое (поддержку XMP) в своих продуктах? Вот что мне Леон ответил:
Цитировать
Xmp is only used to annotate documents for archival etc.
No viewer implements XMP and this is why the spec says that the old metadata should be kept in sync.
Also I have seen Lizardtech, then Celartem, then Caminova.
DjVuLibre lasts longer than companies it seems.
То есть, уже и Леон считает, что развитие формата DjVu должно идти независимо от владельцев прав на формат DjVu - кто бы то ни был на данный момент времени. ;D Я, кстати, тоже независимо от Леона пришёл к точно такому же выводу.

N.M.E.

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: CuneiForm для DjVu
« Ответ #65 : 05 ґХЪРСам 2010, 22:18:11 »
monday2000
Цитировать
А что это за версия "3.5.23b" - что значит "b"? Где её взять?
что такое "b"? .. наверное, Bottou знает))
а брать - как обычно, на sourceforge.net..

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #66 : 06 ґХЪРСам 2010, 09:35:50 »
N.M.E.
Цитировать
а брать - как обычно, на sourceforge.net..
Точно, увидел я этот дистрибутив. Просто он никак не обозначен на главной странице.

Переделал djvused, чтобы выводил номер страницы. Ссылка та же:

http://www.djvu-soft.narod.ru/soft/djvused.rar  (257 КБ)

Нужное изменение взято отсюда:

http://djvu.cvs.sourceforge.net/viewvc/djvu/djvulibre-3.5/libdjvu/DjVuDumpHelper.cpp?view=log Revision 1.12

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #67 : 06 ґХЪРСам 2010, 10:03:38 »
Я перекомпилировал исправленный djvutoxml:

http://www.djvu-soft.narod.ru/soft/djvutoxml.rar  (246 КБ)

Теперь djvutoxml поддерживает все свои опции командной строки - а до исправления не подерживал опцию --page и не поддерживал произвольный порядок следования опций в командной строке.

Правда, в этой моей версии djvutoxml имеется одна небольшая проблемка: сообщения об ошибках не раскрываются из XML-файлов. Это опять я не смог пока отследить нужное место в цепочке обновлений DjVuLibre.  То есть, в djvutoxml из 3.5.23b такой проблемы нет, а в данном экзешнике есть.

Но на работу утилиты это никак не влияет, это чисто косметическое неудобство. Однако я всё равно буду думать, как победить эту проблему. Я уже сейчас могу силовым приёмом устранить эту проблему - но не хочу "грубить", хочу найти именно правильное решение проблемы.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #68 : 06 ґХЪРСам 2010, 11:41:29 »
Всё, разобрался я со своей проблемой с djvutoxml. Оказывается, в более свежих версиях DjVuLibre, чем у меня, файл languages.xml переместился из папки \share\djvu на один уровень ниже - в папку \share\djvu\osi . :o Именно поэтому djvutoxml не мог отыскать папку с XML-сообщениями об ошибках.

Так что выложенный в предыдущем посте djvutoxml абсолютно нормальный.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #69 : 16 ґХЪРСам 2010, 10:15:16 »
Я сделал новую программу:

CuneiDjVu

Скачать версию 1.0:

http://djvu-soft0001.nxt.ru/cuneidjvu_v1_0.rar  (24,1 МБ)

Зеркало:

http://ifolder.ru/20836011

Исходники:

http://www.djvu-soft.narod.ru/soft/cuneidjvu_v1_0_src.rar  (24 КБ)

Это GUI над Windows-версией CuneiForm-Linux v1.0 (CuneiForm-Linux-Win v1.0 входит в состав CuneiDjVu, отсюда и столь большой размер). Программа принимает на входе один DjVu-файл, распознаёт его посредством CuneiForm, и внедряет результат распознавания в копию исходного DjVu.

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

Качество распознавания - не очень. Для серьёзных целей программу использовать не следует. Это, в сущности, экспериментальная программа. Лицензия - GPL 2 and later, т.е. полностью свободно-бесплатная.

Схема работы такая (она постраничная): DjVu декодируется в BMP посредством fi_ddjvu. BMP распознаётся посредством Cuneiform (который в моей сборке только BMP и поддерживает на входе) и получается hOCR-файл. hOCR-файл преобразуется в DjVu XML посредством моей утилиты hocr2djvuxml. Полученный XML подаётся на вход djvuxmlparser, и тот внедряет его в копию исходного DjVu. Также используется djvudumpm, чтобы получить структуру обрабатываемого DjVu-файла.

Все промежуточные файлы (hOCR и XML) создаются в папке "tmp" в папке программы. Они сохраняются после каждого распознавания любого DjVu-файла (стираясь при начале каждого нового распознавания). Это даёт возможность в случае возникновения каких-либо глюков или проблем посмотреть на сгенерированные hOCR и XML файлы чтобы понять, в чём дело.

Я нашёл в djvuxmlparser 2 или 3 глюка. Пока что я решил их не исправлять и прямо так и выложить CuneiDjVu (а то бы я ещё не скоро её выложил :) ). Глюки такие: в начале каждого параграфа текстового слоя DjVu вставляется один некий "левый" символ (это пока относительно малокритично) - хотя в исходном DjVu XML его не было. А второй посерьёзнее - djvuxmlparser падает на слишком длинных именах в командной строке - пишет "abnormal program termination". Третий глюк - даже не могу толком сформулировать - возможно, просто проявление 2-го.

djvuxmlparser я буду потом отлаживать.

И ещё я обновил hocr2djvuxml - отладив его на CuneiDjVu. Вот обновлённая версия (1.2, она вошла в CuneiDjVu):

http://www.djvu-soft.narod.ru/soft/hocr2djvuxml.rar  (377 КБ)

Также я обновил fi_ddjvu (до v1.3) - перекомпилировал его с DjVuLibre 3.5.17 на DjVuLibre 3.5.23. Это позволило устранить найденный глюк - невозможность выборочного декодирования отдельных страниц DjVu в случае, если они имеют кириллические имена. Сейчас этот глюк ушёл (а без этого вся работа CuneiDjVu была бы невозможна).

В любом случае, я считаю данную программу прорывом. Впервые мы получили прямое CuneiForm-распознавание DjVu-файлов под Windows. К тому же, это полностью легальное свободно-бесплатное средство (с открытыми исходниками).

Пусть CuneiDjVu пока ещё несовершенна - но у неё ИМХО есть будущее.

Теперь предстоит отлаживать CuneiDjVu на самых разнообразных DjVu-файлах. Обновления будут выпускаться в виде update - т.е. они не будут содержать сам консольный cuneiform (он не будет меняться), а только все прочие файлы. Для этого все файлы в папке программы поделены на 2 папки: "cuneiform" (консольный cuneiform) и "bin" (все остальные файлы). Обновления будут затрагивать только содержимое папки "bin".

P.S. C самого начала, когда открылись исходники СuneiForm, возникла идея применить его для распознавания DjVu. Прошло несколько лет - и сегодня эта мечта воплотилась в жизнь (под Windows, под Linux она ещё раньше реализовалась).
« Последнее редактирование: 16 ґХЪРСам 2010, 11:01:39 от monday2000 »

yuree

  • Постоялец
  • ***
  • Сообщений: 172
    • Просмотр профиля
    • E-mail
Re: CuneiForm для DjVu
« Ответ #70 : 15 °ЯаХЫм 2011, 18:48:44 »
Уважаемый monday2000. Пишет Вам одноимённый юзер с rutracker.org
Итак, я прочёл предоставленную Вами ветку и зарегистрировался.
Теперь понятно почему hOCR пора сдавать в утиль а предпочтение отдать XML'скому формату. Отсюда вопрос.
Каким образом можно организовать единый процесс по созданию OCR слоя (русский-английский) с последующей его правкой, хотя-бы даже в том-же EmEditor, коим я пользуюсь?
Понимаю, о визуальном сличении, как в Abbyy FR например, не может быть и речи но вполне допустимо прогнать OCR-текст через текстовый редактор и словарь. Хотя-бы через тот-же ОРФО или тот что стои'т у меня для проверки правописания в Мозилле или Опере (формат — тупо большой набор слов) и портировать исправленный документ в DjVu. 
Если возможно на страницах данной ветки, "на пальцах", пояснить что за чем идёт и что куда сгружать.
Ведь, думаю, не многие даже знают как запускать из командной строки Ваши экзэшники ::)

И последнее, здесь.
Что-бы там не говорили но, повторюсь, CuneiDjVu довольно не плохой продукт, даже на теперешней стадии реализации. Сравните пару страниц из книги ;)

Document Express 6.5 Professional

дельнОСТЬ существования в самом себе. В иrре
нет никакой идеи) налаrаемой на мир. Она
б (( »
тре ует жить моментом) неисчерпаемым
разнообразием жизненных мrновений и) зна
 
чит) жить воистину) избеrая зависимости от
умственных абстракций) от всяких отвлечен
 
ных понятий. Тирании абстракций
 неиз
 
бежно словесной
 китайцы противопостав
 
ляли молчаливое доверие к самой жизни) к ее
неостановимому потоку) каждое мrновение
ставящему нас перед бездной тысяч превра
 
u "
щении) десяти тысяч перемен .
Китайская мудрость
 это наука бодрство
 
"
вания духа) чуткоrо отслеживания текущеrо
момента". Ее rлавный вопрос
 не что) даже
не как) но
 коzда? Коrда действовать и коrда
"б) ,(
хранить покой? Коrда ыть и коrда не
быть"? Ключевые понятия китайской мысли

 это "случай") который в жизни мудроrо
оказывается неизменной судьбой; всеобъят
 
ная "сила ситуации") которая без видимоrо
воздействиЯ направляет движение Bcero мира;
"сокрытый импульс» жизни) определяющий
изнутри при роду каждой вещи. Знаменитые
"китайские церемонии») мноrозначительная
торжественность жеста были способом такой
виртуальной коммуникации) подразумевае
 
мой стратаrемами. Коммуникации в безмол
 
==========================================================================
==========================================================================

CuneiDjVu

дельность существования в самом себе. В игре
нет никакой идеи, налагаемой на мир. Она
требует "жить моментом", неисчерпаемым
разнообразием жизненных мгновений и, зна-
чит, жить воистину, избегая зависимости от
умственных абстракций, от всяких отвлечен-
ных понятий. Тирании абстракций — неиз-
бежно словесной — китайцы противопостав-
ляли молчаливое доверие к самой жизни, к ее
неостановимому потоку, каждое мгновение
ставящему нас перед бездной тысяч превра-
щений, десяти тысяч перемен .
Китайская мудрость — это наука бодрство-
&l
вания духа, чуткого отслеживания текущего
момента". Ее главный вопрос — не что, даже
не как, но — когда? Когда действовать и когда
хранить покой? Когда "быть" и когда "не
быть" ? Ключевые понятия китайской мысли
— это 'случай", который в жизни мудрого
оказывается неизменной судьбой; всеобъят-
ная "сила ситуации", которая без видимого
воздействия направляет движение всего мира;
"сокрытый импульс жизни, определяющий
изнутри природу каждой вещи. Знаменитые
китайские церемонии", многозначительная
торжественность жеста были способом такой
виртуальной коммуникации, подразумевае-
мой стратагемами. Коммуникации в безмол-
вии, где единичное сходится со всеобщим.
Все, на что мог надеяться гениальный человек
в Китае, — это счастливый случай", позво-
ляющий претворить свою судьбу, реализовать
себя без остатка.
Случай предоставляется нам лишь раз в
день, в месяц, в год, в десять лет, в сто лет,—
писал в XVII в. ученый Тан Чжэнь. — Вот по-
чему нужно быть готовым не упустить его.
Даже если этот случай откроется нам за едой,
нужно тотчас бросить свои палочки и выбе-
жать из-за стола. Ибо может статься, что, ко-
гда мы закончим трапезу, случай уже ускольз-
нет от нас...
Случай — это встреча человека с его судь-
бой, и мгновение, в которое решается, быть
ли победе или поражению..."
Счастливый случай, о котором толкует Тан
Чжэнь, означает не что иное, как мгновенное
и полное претворение предельно малого в
предельно большое, конкретного — во всеоб-
щее. Быть мудрым по-китайски — значит
просто уметь все делать вовремя, без остатка
переносить себя в целокупное движение жиз-
ни и тем самым, как ни странно, не выдавать
своего присутствия, быть "некоронованным
повелителем' мира, 'драконом, сокрытым в
облаках". Или, как резонно замечает автор

Итак, как видно из сравнения, качество распознавания не на стороне Лизардтеха ::)
К тому-же, как Вы заметили CuneiDjVu знак "—" упорно воспринимает как "—". Но мне, в том-же EmEditor ничего не сто'ит произвести замену одной группы знаков на другой знак. Например как здесь:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DjVuXML PUBLIC "-//W3C//DTD DjVuXML 1.1//EN" "pubtext/DjVuXML-s.dtd">
<DjVuXML>
   <BODY>
      <OBJECT data="file://localhost/fake_filename.djvu" type="image/x.djvu" height="1949" width="2657" usemap="fake_filename.djvu">
         <PARAM name="PAGE" value="36_0007_0001.djvu" />
         <HIDDENTEXT>
            <PAGECOLUMN>
               <REGION>
                  <PARAGRAPH>
                     <LINE>
                        <WORD coords="55,172,269,205">дельность</WORD>
                        <WORD coords="285,165,607,205">существования</WORD>
                        <WORD coords="622,164,644,187">в</WORD>
                        <WORD coords="659,161,792,186">самом</WORD>
                        <WORD coords="807,148,903,183">себе.</WORD>
                        <WORD coords="920,147,946,181">В</WORD>
                        <WORD coords="961,156,1055,191">игре</WORD>
                     </LINE>
                     <LINE>
                        <WORD coords="58,229,128,254">нет</WORD>
                        <WORD coords="155,217,332,253">никакой</WORD>
                        <WORD coords="360,223,471,254">идеи,</WORD>
                        <WORD coords="499,209,742,245">налагаемой</WORD>
                        <WORD coords="770,216,818,240">на</WORD>
                        <WORD coords="846,213,941,248">мир.</WORD>
                        <WORD coords="970,200,1056,235">Она</WORD>
                     </LINE>
                     <LINE>
                        <WORD coords="58,272,219,320">требует</WORD>
                        <WORD coords="256,268,384,305">"жить</WORD>
                        <WORD coords="423,260,676,303">моментом",</WORD>
                        <WORD coords="715,267,1055,304">неисчерпаемым</WORD>
                     </LINE>
                     <LINE>
                        <WORD coords="59,327,382,376">разнообразием</WORD>
                        <WORD coords="400,330,645,358">жизненных</WORD>
                        <WORD coords="663,317,896,352">мгновений</WORD>
                        <WORD coords="915,324,951,353">и,</WORD>
                        <WORD coords="971,322,1055,347">зна-</WORD>
                     </LINE>
                     <LINE>
                        <WORD coords="60,396,145,425">чит,</WORD>
                        <WORD coords="168,393,276,419">жить</WORD>
                        <WORD coords="300,389,509,424">воистину,</WORD>
                        <WORD coords="532,374,691,411">избегая</WORD>
                        <WORD coords="716,379,988,407">зависимости</WORD>
                        <WORD coords="1012,377,1058,401">от</WORD>
                     </LINE>
                     <LINE>
                        <WORD coords="60,448,320,488">умственных</WORD>
                        <WORD coords="340,435,597,480">абстракций,</WORD>
                        <WORD coords="618,440,665,464">от</WORD>
                        <WORD coords="686,438,831,463">всяких</WORD>
                        <WORD coords="851,434,1057,460">отвлечен-</WORD>
                     </LINE>
                     <LINE>
                        <WORD coords="62,507,149,533">ных</WORD>
                        <WORD coords="177,495,369,529">понятий.</WORD>
                        <WORD coords="400,490,588,535">Тирании</WORD>
                        <WORD coords="619,485,863,530">абстракций</WORD>
                        <WORD coords="892,501,918,505">—</WORD>
                        <WORD coords="947,488,1058,515">неиз-</WORD>
                     </LINE>
                     <LINE>
                        <WORD coords="63,554,197,588">бежно</WORD>
                        <WORD coords="222,549,438,585">словесной</WORD>
                        <WORD coords="461,565,488,570">—</WORD>
                        <WORD coords="510,545,695,583">китайцы</WORD>
                        <WORD coords="720,546,1059,585">противопостав-</WORD>
                     </LINE>
                                                        ...............
                     <LINE>
                        <WORD coords="1452,1585,1744,1623">повелителем'</WORD>
                        <WORD coords="1770,1599,1888,1634">мира,</WORD>
                        <WORD coords="1925,1586,2155,1634">'драконом,</WORD>
                        <WORD coords="2182,1598,2402,1633">сокрытым</WORD>
                        <WORD coords="2429,1599,2451,1622">в</WORD>
.................
                  </PARAGRAPH>
               </REGION>
            </PAGECOLUMN>
         </HIDDENTEXT>
      </OBJECT>
      <MAP name="fake_filename.djvu" />
   </BODY>
</DjVuXML>

На
                     <LINE>
                        <WORD coords="62,507,149,533">ных</WORD>
                        <WORD coords="177,495,369,529">понятий.</WORD>
                        <WORD coords="400,490,588,535">Тирании</WORD>
                        <WORD coords="619,485,863,530">абстракций</WORD>
                        <WORD coords="892,501,918,505">—</WORD>
                        <WORD coords="947,488,1058,515">неиз-</WORD>
                     </LINE>
                     <LINE>
                        <WORD coords="63,554,197,588">бежно</WORD>
                        <WORD coords="222,549,438,585">словесной</WORD>
                        <WORD coords="461,565,488,570">—</WORD>
                        <WORD coords="510,545,695,583">китайцы</WORD>
                        <WORD coords="720,546,1059,585">противопостав-</WORD>
                     </LINE>
                                                        ...............
                     <LINE>
                        <WORD coords="1452,1585,1744,1623">повелителем'</WORD>
                        <WORD coords="1770,1599,1888,1634">мира,</WORD>
                        <WORD coords="1925,1586,2155,1634">'драконом,</WORD>
                        <WORD coords="2182,1598,2402,1633">сокрытым</WORD>
                        <WORD coords="2429,1599,2451,1622">в</WORD>
                     </LINE>

Т.е после слов "абстракции" и "словесной" стои'т уже' не "—" а "—".
Весь вопрос в том — как добавить этот исправленный файл в DjVu.

И, простите, получилось несколько овервордовски.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #71 : 18 °ЯаХЫм 2011, 12:12:26 »
yuree
Цитировать
Итак, я прочёл предоставленную Вами ветку и зарегистрировался.
Добро пожаловать!
Цитировать
Каким образом можно организовать единый процесс по созданию OCR слоя (русский-английский) с последующей его правкой, хотя-бы даже в том-же EmEditor, коим я пользуюсь?
Честно говоря, пока не знаю. Естественно, для правки hOCR нужен некий специальный софт - на базе какого-нибудь XML-редактора. В принципе, hOCR хоть даже и в Блокноте вручную - просто это будет неудобно.
Тем более это будет неудобно для случая побуквенно-координатного варианта hOCR (т.е. когда каждая буква имеет координаты - а не только слово).

Попробуйте рассмотреть разнообразные XML-редакторы - вдруг какой-нибудь подойдёт.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #72 : 26 °ЯаХЫм 2011, 17:29:32 »
Сегодня я сделал попытку исправить глюк в djvuxmlparser.

Точнее сказать, глюк имеется только в "моей" версии djvuxmlparser.exe - который я скомпилировал из исходников CVS DjVuLibre в MS VC++ 6.0. "Официальная" версия djvuxmlparser.exe, скаченная с сайта DjVuLibre, этого глюка лишена.  :(

Вот какое я сделал исправление:
См. http://djvu.cvs.sourceforge.net/viewvc/djvu/djvulibre-3.5/libdjvu/XMLTags.cpp?revision=1.13&view=markup строка 198
if(!isspaces(raw))
{
    if (!(raw.nextNonSpace() == 0 && raw.length() == 1 && atoi(raw.getbuf()) == 0)) // добавленная
    // мною строка

    G_THROW( (ERR_MSG("XMLTags.raw_string") "\t")+raw);
}
В общем, по какой-то причине у строки raw при некоторых обстоятельствах не обрезается сзади ограничивающий нуль (так я понял проблему).

Я написал письмо Биллу Риемерзу с вопросом, насколько правомерно такое исправление, и достаточно ли оно безопасно, чтобы я мог им далее пользоваться. Леону Боту я пока писать не стал, так как XML-утилиты в DjVuLibre курирует Билл, а не Леон.
« Последнее редактирование: 26 °ЯаХЫм 2011, 17:32:15 от monday2000 »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #73 : 28 °ЯаХЫм 2011, 09:52:51 »
Я скомпилировал DjVuLibre 3.5.24 и djvuxmlparser в его составе.

Глюк, описанный в предыдущем посте, исчез!

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: CuneiForm для DjVu
« Ответ #74 : 29 °ЯаХЫм 2011, 10:03:13 »
Новая подверсия:

CuneiDjVu v1.1

http://djvu-soft0001.nxt.ru/cuneidjvu_v1_1.rar  (24,1 МБ)

Исходники:

http://www.djvu-soft.narod.ru/soft/cuneidjvu_v1_1_src.rar  (24 КБ)

Что нового:

- Обновлены все консольные DjVuLibre-утилиты (своими же свежими версиями, скомпилированными из исходников DjVuLibre 3.5.24). Это позволило в частности устранить глюки из предыдущей версии:
Цитировать
А второй посерьёзнее - djvuxmlparser падает на слишком длинных именах в командной строке - пишет "abnormal program termination". Третий глюк - даже не могу толком сформулировать - возможно, просто проявление 2-го.
Теперь программа в целом должна работать гораздо стабильнее.

- Убрана папка "bin". Я решил, что она была излишним усложнением.

- Встроенная помощь (Help) теперь запускается в броузере по умолчанию, а не в Internet Explorer.