poniedziałek, 21 marca 2016

Co w QuickQit piszczy - Kooka

Pod hasłem "Co w QuickGit piszy" będę prezentował różne nowości, które pojawiają się w ramach prach nad szeroko pojętym środowiskiem graficznym oraz aplikacjami rozwijanymi pod auspicjami KDE. Serwis quickgit.kde.org jest takim właśnie miejscem, gdzie prosto i łatwo zebrane mamy różne źródła oprogramowania, które związane są z KDE. Na pierwszy rzut Kooka.
Pamiętacie taki programik? Kiedyś w czasach KDE3 stanowił on bodaj jedyne narzędzie umożliwiające skanowanie zbudowane specjalnie dla tego środowiska. Ba, oferował on coś znacznie więcej, albowiem zeskanowany obraz (bądź jakikolwiek, znajdujący się na dysku), można było poddać obróbce, w tym popularnemu w tamtych czasach OCR. W czasach KDE4/Qt4 nie cieszył się on popularnością. Wersja oparta o KDE3/Qt3 umarła gdzieś w mrokach dziejów, zaś nowa wersja, oparta o biblioteki KDE4 i Qt4 nigdy nie ukazała się w wersji umożliwiającej na niej pracę. Zamiast tego, KDE4 oferowało znacznie okrojone narzędzie umożliwiające skanowanie, jakim jest skanlite. OCR? Kto jeszcze pamięta ten sposób obróbki dokumentów tekstowych (głównie). Powierzchnia dyskowa stała się tańsza, pojawiły się chmury, jeśli zatem zachodzi konieczność przechowywania jakichś dokumentów to robimy to w formatach graficznych bądź pdf, djvu itp. Narzędzie OCR, które związane byłoby z KDE4 nie było oferowane. Wprawdzie istniał projekt Cuneiform-Qt4 dodawany do jakiejś rosyjskiej dystrybucji, ale dzisiaj nawet kodu próżno szukać. Istniały też dwie, niezależne od KDE nakładki graficzne na silniki OCR: YAGF i GImageReader. Żadne jednakże nie wykorzystywało mechanizmów KDE4 i ze środowiskiem tym dość słabo się integrowało. Przynajmniej wizualnie.
Zdziwiłem się zatem dość mocno, kiedy kilka miesięcy temu zauważyłem pośród projektów rozwijanych dla nowej już odsłony KDE, opartą o KF5, reanimowaną Kooka. Początkowo w ogóle nie nadawała się ona do użytku. Wraz z rewizją 1014 udało mi się jednak zbudować program, który uruchamia się i działa. 
Mamy tę samą funkcjonalność, którą oferowała Kooka w wersji dla KDE3. Program zatem pozwala nie tylko skanować, ale również przeprowadzać OCR, a także tworzy i kataloguje stworzone przez siebie dokumenty. Korzysta z trzech silników: gocr, ocrad oraz kadmos. Ten ostani jest komercyjnym, zamkniętym oprogramowaniem (o ile wiem) i nie jest dostępny w Archu. Pozostałe są. Niestety nie potrafi wykorzystać np. tesseract, który - jak się wydaje - najlepiej ze wszystkich silników OCR dostępnych dla linuksa potrafi rozpoznać polski język. Może z czasem się i to uda, zwałszcza, że jest on popularniejszy od pozostałych.
Poniżej PKGBUILD i plik *.install umożliwiający budowę tej aplikacji. Proszę wziąć pod uwagę, że nie jest to jeszcze wersja wydana. Jeśli jednak chcielibyśmy pomóc w jej rozwoju, choćby zgłaszając zaobserwowane błędy, to warto się chyba włączyć.
PKGBUILD
# Maintainer: pavbaranov

pkgname=kooka-frameworks-git
pkgver=r1014.0bea61e
pkgrel=1
pkgdesc="A Lite image scanning application. KF5 Frameworks branch (GIT version)"
arch=('i686' 'x86_64')
url="http://www.kde.org/applications/graphics/skanlite"
license=('GPL')
depends=('kdelibs4support' 'sane' 'hicolor-icon-theme' 'libpaper')
makedepends=('cmake' 'git' 'extra-cmake-modules' 'python' 'kdoctools')
optdepends=('ocrad' 'gocr')
conflicts=('kooka')
provides=('kooka')
source=('git://anongit.kde.org/kooka#branch=frameworks')
install=kooka.install
sha1sums=('SKIP')
_gitname="kooka"

pkgver() {
  cd "${_gitname}"
  printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

prepare() {
  rm -fr build
  mkdir -p build
}

build() { 
  cd build
  cmake ../kooka \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DLIB_INSTALL_DIR=lib \
    -DKDE_INSTALL_USE_QT_SYS_PATHS=ON
  make
}

package() {
  make -C build DESTDIR="${pkgdir}" install
}
kooka.install
post_install() {
xdg-icon-resource forceupdate --theme hicolor &> /dev/null
update-desktop-database -q
update-mime-database usr/share/mime &> /dev/null
}

post_upgrade() {
post_install
}

post_remove() {
post_install