вторник, 13 декабря 2011 г.

О названии.

Я задал вопрос по поводу названия автору программы и он ответил следующее:

Ha ha ha a lot of people have asked why it is called Mayan, but I don't answer because it is a small joke.  The first version of Mayan I did in February for my work was done in less than 6 days.  It was an emergency because my government has started requiring digital documents but did not provide the agencies with any document management software, and we really had no idea what to do, so based in what I learned from other DMS, I did one for our specific needs.  The day before the installation I was watching a documentary on the 'Templo de las Inscripciones' as you have noted, and I thought "Wow I don't think the Mayan never had any document management problem because they were really organized and intelligent people".  And so that's the story, it's an internal joke about how I think the Mayan are smarter than the people running the government in my country! :D
То есть ему пришлось делать эту систему в спешке для служебных целей, поскольку его правительство осчастливило всех необходимостью введения электронного документооборота не предоставив к тому ПО. Я так думаю, что он натыкался на те же грабли что и я при поиске СЭД, и в результате он сделал свою Mayan. За день до инсталляции он увидел фильм о Храме Надписей в древней столице майя Паленке - том самом храме, где на крышке саркофага К’инич Ханааб Пакаля находится изображение, которое часть граждан считает изображением космонавта и пришел к выводу, что древние майя были умнее нынешнего правительства и не имели проблем с управлением документами.
В общем столько часовых поясов между Пуэрто-Рико и Россией, а проблемы те же.

Изменения в процедуре установки 0.11 и обновление 0.11.1

При установке 0.11 после ./manage.py syncdb предлагается выполнить ./manage.py migrate для создания остальных таблиц, но эта процедура не завершается, поскольку джанго пытается создавать индексы для текстовых полей, которые требуют указания длины ключа
_mysql_exceptions.OperationalError: (1170, "BLOB/TEXT column'description' used in key specification without a key length")
Для выполнения процедуры мне пришлось удалить db_index=true для TextField из файла mayan/apps/documents/migrations/0001_initial.py, удалять все таблицы documents_*, запускать ./manage.py migrate и создавать соответствующие FULLTEXT индексы вручную.
Вышло обновление 0.11.1 исправившее ошибку при удалении документа.

четверг, 8 декабря 2011 г.

Тест 0.11

Сегодня не выдержал и забросил ремонт (я после работы с удовольствием осваиваю штукатурное дело) и испытал новую версию на соответствие моим минимальным потребностям, а именно - поддержку офисных форматов. Честно говоря, то что Майян отображает документы в виде картинок приятно, но не очень важно для меня, а вот то что теперь после отправки документа на распознавание в поле содержимого появляется текст - это уже большой плюс, поскольку уже позволяет вести поиск среди документов. Видел вкладку версий и подписей, сделал перевод к новому приложению. Предложу Роберто извлекать текст из офисных документов в процессе закачки.
 Из личных мучений сделал вывод - сейчас проще всего устанавливать Майан под Arch. Роберто постоянно обновляет свою систему и "чтобы оставаться на месте здесь нужно бежать", и вот Arch в этом смысле очень удобен, жаль что мне так и не удалось его установить в OpenVZ. Буду клянчить у начальства новый сервер под эту штуку.

upd. Роберто на мои предложения ответил, что

The option for automatic text extraction/OCR is:
OCR_AUTOMATIC_OCR = True
put this in your settings_local.py file and restart the webserver, verify that it in 'Setup' -> 'Settings'

Version .11 also tries to extract text from office documents before doing an OCR.

Thank you for the suggestions I will improve the format of the text extracted, and will try add CSV support to this.

среда, 7 декабря 2011 г.

Версия 0.11

Список изменений
Вкратце:
  1. Добавлена поддержка цифровых подписей, как внедрённых в документ, так и отдельных.
  2. Добавлена поддержка версий документов.
  3. Извлечение текста из офисных документов.
  4. Добавлены новые mime-типы офисных документов.
  5. В число требующихся программ включена система миграции баз данных South и добавлены соответствующие миграции.

понедельник, 28 ноября 2011 г.

Кодировка mysql по умолчанию

Чтобы была utf8 (спасибо, http://broderix.blogspot.com/2009/06/mysql5-default-character-collation.html)

Можно еще проще для ubuntu (10.04):
создать файл, например /etc/mysql/conf.d/mysqld_charset.cnf
с текстом:


[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
init-connect='SET NAMES utf8;'
collation-server=utf8_general_ci

[mysql]
default-character-set=utf8

среда, 23 ноября 2011 г.

Новая версия Mayan EDMS (0.10)

Группировка теперь называется smart-link, которая в моём переводе называется "отношение" , поскольку Брокгауз-Евфрон отношение трактует как сообщение лиц не подчиненных друг другу. Умная ссылка это броско, но вместо двух слов я предпочитаю использовать одно - наш язык и так очень неэкономный. В этой версии используется unoconv 0.4.1 и мне пришлось обновить Ubuntu до 11.10. Что-то опять не вяжется с офисными файлами. Пока не ковырял глубже. Пожалуй я так и сам чего-нибудь на джанге научусь делать.

вторник, 22 ноября 2011 г.

Всё идёт по плану

Roberto охотно отозвался на мои слова о неспособности Mayan корректно работать с офисными форматами файлов и непонятки с grouping. В результате девелоперская версия уже имеет новый интерфейс для grouping, который теперь называется smart_link, и по сути является способом объединения разных документов по определённым признакам, например по вхождению какого-либо слова в метаданные. Условия раньше задавались через админку, а теперь это возможно непосредственно из Mayan EDMS.

В работе с офисными файлами пока ничего нового не заметил, но судя по всему какая-то работа идёт, потому что на github Roberto в комментариях к правкам постоянно упоминает mime-types и convertor.

Ошибка decoder jpeg not available

Решается так

sudo apt-get install python-dev libjpeg-dev

и за тем

pip install --upgrade pillow

среда, 16 ноября 2011 г.

Версия 0.9.1, конвертер офисных файлов и документация

В этой версии Roberto исправил ошибку поиска по запросу, содержащему строку в UTF-8.

До этого я задавал автору вопрос по поводу возможности просмотра и  индексации офисных форматов, и он ответил, что для этого нужно установить unoconv и libreoffice и запускать последний в headless режиме. Итак apt-get install libreoffice-common unoconv. Запуск libreoffice с ключом -headless ничего не дал -- на порту 2002 меня никто не ждал. Но добрый волшебник Роберто в папке mayan/contribs/supervisor оставил некие файлики, в соторых можно посмотреть как нужно запускать libreoffice. Как оказалось они содержат конфигурации для запуска supervisor (apt-get install supervisor), после установки которого эти файлы следует положить в /etc/supervisor/conf.d. Но тут опять засада - supervisor не запускается, ругаясь на meld3 не той версии, на что мы ему отвечаем нашим красным, пролетарским sudo pip install --upgrade meld3. После чего запускаем supervisor и можем рулить офисом sudo supervisorctl start openoffice. Вроде бы все требования выполнил, но увидеть образы страниц мне пока не удалось. Будем копать дальше

Кроме того, наконец, дошли руки до докуметации, исходники которой находятся в папке docs. Скомпилировать в html их можно при помощи make html, но для этого пришлось apt-get install python-sphinx, готовая  документация после компиляции появилась в папке docs/_build/html, которую я при помощи строк

location /docs {
autoindex on;
index index.html;
alias /home/assa/mayan/mayan/docs/_build/html/;
break;
}

заставил отображаться на сервере.

среда, 9 ноября 2011 г.

Локализация

Русская локализация уже включена в версию 0.9, которую я сегодня установил. Мой корявый перевод её вряд ли сильно украсит, но может быть эта самая корявость кого-то подвигнет что-то исправить. Ещё несколько замечаний по переводу:
  1. Я не знаю как переводится термин Stage Folder в контексте Mayan, но предполагаю, что это папка, куда автоматически выгружается сканы документа, в связи с чем я использую как перевод слово "транспортный" т.е. "транспортная папка" и "транспортный файл"
  2. Стараюсь выкидывать слово "успешно", которое переводчик от google услужливо подсовывает django-rosetta, на которой я остановился как на инструменте для перевода. Пробовал какое-то чудо java-мысли OmegaT, но в очередной раз убедился, что у меня с Java несовместимая ДНК.
  3. В дальнейшем для "transformation" я буду использовать не "преобразование", а "обработка".
В коде api.py приложения ocr сделана пометка, что tesseract 3.0 падает при lang отличном от None, но за версией 3.01.1 я подобного не заметил. Вот из письма Roberto:
The lines:

if lang is not None:
       command.extend([u'-l', lang])
are commented because Tesseract 3.0 is very unstable and gives a 'segmentation fault' with the -l option, I'm waiting for the developers to fix this so I can uncomment the lines permanently.

As for the difference on manual OCR, I don't think you are doing anything wrong, I have the same situation as you, sometimes running the OCR manually gives different results as with Mayan.

This is how OCR works in Mayan:
1) High resolution image is created from the document and stored in the directory 'image_cache'  (filename is a hash of the document.checksum + page number + transformation string)
2) The document image is passed to the 'unpaper' software for cleanup and converted to the 'tiff' format
3) The TIFF file is passed to Tesseract
4) The result text from Tesseract is cleanup by the 'language backend filter' (eng.py, rus.py, spa.py)

The difference could be caused by several things:
 - if the document is a PDF, there are many format versions of PDF and sometimes Mayan has trouble doing a good preview, I'm working to increase Mayan support for all PDF versions.
 - the other reason could be the 'unpaper' software, I plan to add a settings to skip the 'unpaper' step in the future, gives very good results for some documents and very bad results for other documents.
 - finally sometimes it is 'Tesseract' itself the problem, that is why I also plan to support other OCR programs in the future to let users choose the one they like better.

то  есть со временем он предполагает дать возможность подключать другие движки распознавания символов, а tesseract ещё далёк от идеала, впрочем как и cuneiform. Пока же придётся обходиться без OCR.

Установка

Установка для ubuntu достаточно подробно описана на http://mayan.readthedocs.org/en/development/installation.html, я так же пробовал устанавливать под arch и не испытал никаких сложностей. Хочу только добавить, что на производстве я использовал сервер виртуальных машин Proxmox VE, в котором создал контейнер ubuntu 11.04 и над ним и производил все эти действия. Кроме того, учитывая, что встроенный джанговский сервер не рекомендуется для использования в боевом режиме я по статье http://habrahabr.ru/blogs/django/85851/ настроил сервис для Mayan. Содержимое /etc/services/mayan/run:

#!/usr/bin/env bash
source /home/assa/mayan/bin/activate
cd /home/assa/mayan/mayan/
exec envuidgid assa python manage.py runfcgi method=threaded host=127.0.0.1 port=8080 pidfile=mayan.pid minspare=4 maxspare=30 daemonize=false
содержимое /etc/nginx/sites-available/mayan

server {
listen 80;
server_name edms edms.crb.local;
access_log /var/log/nginx/mayan.access.log;

location /mayan-static {
autoindex on;
index index.html;
alias /home/assa/mayan/mayan/static/;
break;
}
location / {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:8080;
break;
}
}
ну и скрипт перезапуска - положить куда нибудь и использовать по вкусу

svc -d /etc/service/mayan/
svc -u /etc/service/mayan/
service nginx restart



вторник, 8 ноября 2011 г.

Зачин

Я достаточно долго искал систему хранения и публикации электронных документов для нашей больнички и всё мне что-то н нравилось: то русского языка нет, то денег просят, которых у нас всё время нет. И на систему, на которой я остановился уже неоднократно натыкался, но в ней не было русской локализации, и с установкой как-то не получалось с наскока, а тут вдруг заметил ссылочку на документацию, не очень богатую, но для начала достаточную и установил сначала дома, а потом и на рабочем сервере. И так, братие, встречайте: Mayan EDMS! http://rosarior.github.com/mayan/
Написана на Django, что с моей точки зрения плюс, поскольку с Python в отличие от PHP я немного знаком, благодаря intuit.ru. Система позволяет хранить электронные документы, обвешивая их тегами и метаданными, определять права доступ к ним, выполнять различные преобразования и распознавать их через tesseract. Как tesseract распознаёт русский текст я не пробовал, но и без того функционала мне должно хватить. 
А как же с русской локализацией? - может спросить меня внимательный читатель, и я отвечу, что она уже делается: я связался с автором, и он создал на https://www.transifex.net/projects/p/mayan-edms/team/ru/ команду русской локализации, координатором и единственным (пока?) участником стал ваш покорный слуга. Сейчас пользоваться локализацией пока нет смысла из- за дыр, но Бог даст через недельку будет черновая версия. В общем главное ввязаться, а там посмотрим.

Почему именно Mayan EDMS?

 Итак, почему же я выбрал для экспериментов с электронным документооборотом именно Mayan EDMS? Во-первых потому, что нравится. Во-вторых потому, что написана не на java. Мой весьма небогатый опыт использования продуктов написанных на java (включая minecraft) ни разу не принёс мне чувства удовлетворения. И даже более того - у меня возникли подозрения, что люди, пишущие на java имеют отличный склад ума, в смысле отличный от моего. Поэтому увидев, что в "Доцеро" используется java я  расстался с мыслью даже смотреть в эту сторону. Это, конечно тараканы, но они мои. За сим из рассмотрения была так же исключена Alfresco. Если ещё исключить коммерческие продукты, которых воз и маленькая тележка, то ничего, собственно, уже и не остаётся. 
В идеале, конечно, нужна СЭД, но и возможностей электронного архива для начала будет выше крыши, учитывая уровень пользователей в нашей организации. Mayan же написана на Python под Django и распространяется под лицензией GPL, предоставляет вэб-интерфейс и поэтому невозбранно может быть установлена на наши, не блещущие параметрами, компьютеры. Но есть и минус - не имеет поддержки русского языка. Точнее раньше не имела, но надежда, что будет иметь всё же есть.