Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Опис на проблемот

Во годините кога компјутерите генерално не знаеле да работат со кирилица, IT секторот во Македонија проблемот го решиле со креирање на специјални фонтови во кои латичните букви биле цртани со соодветните кирилични знаци. Така на пример R било Р, V било В, Y било Ѕ, Q било Љ и така натаму. Бидејќи латиницата има помалку букви од кирилицата, некои додатни букви биле ставени на други знаци: { било Ш, } било Ѓ, итн.

Самата содржина, што се однесувало до компјутерите, била на латиница, но таквиот документ прикажан или испечатен со соодветниот фонт изгледал како напишан на кирилица.

Но ова квази-решение создава многу други проблеми со обработка на податоците. Неколку примери, програмите за обработка на текст го третирале сврзникот „и“ како латично „i“, па автоматски го менувале во големо I (според англискиот правопис). Понатаму, програмите не ги третираат Ш (т.е. {) и сличните како букви, туку како знаци, па не функционира автоматската поделба на зборовите на крајот од реченицата.

Суштината на овие проблеми е дека информацијата за содржината дека е напишана со кирилица се губи во моментот кога информацијата за фонтот е недостапна.

Секоја автоматска обработка или индексирање и пребарување на текстот драстично се усложнува.

Потребата за ова квази-решение е одамна надмината со појавата на оперативните системи кои имаат подршка за Unicode и со употребата на Unicode (UTF-8) во сите нови стандарди за формати на документи, и во програмите за складирање и обработка на податоци. Но, за жал и до ден денес сеуште ќе најдеме документи пишувани во вакви специфични (таканаречени YUSCII) фонтови, а и сеуште се пишуваат.

Со помош на овој програм можеме да ги конвертираме документите напишани со фонтови, во документи со правилна Unicode кирилица.

Анализа на ODF документ

Една ODF датотека е всушност zip архива во која се наоѓаат неколку посебни датотеки, меѓу кои: самата содржина на документот (content.xml); сликите и други слични прилози; и датотеки со мета-информации за самиот документ.

Логиката на програмот е:

  • прво, да ги најде сите дефинирани стилови во документот кои користат некој од проблематичните фонтови, и да ги смени стиловите да користат нормален фонт (според зададена релација);
  • второ, да ја најде содржината која ги користи овие стилови и да ја конвертира содржината од yuscii во utf-8.

Главни од интерес на програмов се styles.xml и content.xml, бидејќи и двете датотеки можат да содржат стилови за содржината. Стилови можат да наследуваат карактеристики од други стилови, па и тоа треба да се има предвид.

Структурата на content.xml упростено изгледа вака:

<style name="P1"> ... <style name="P2" parent-name="P1">

jas sum glupa kirilica

јас сум ок кирилица glupa

...

http://en.wikipedia.org/wiki/OpenDocument_technical_specification

Quick analysis code

pretty_print = lambda el: lxml.etree.tostring(el, pretty_print=True)
find = lxml.etree.XPath("//b")
tree = lxml.etree.parse(io.BytesIO(xml))
root = tree.getroot()
nsmap = root.nsmap
tree.xpath('.//style:font-face', namespaces=nsmap)
tree.xpath('.//style:text-properties', namespaces=nsmap)

Some XPaths:

  • //style:style[style:text-properties[@style:font-name|@style:font-name-complex]]
  • /office:document-content/office:body/office:text

Инсталација

$ pip install --user git+https://github.com/gdamjan/convertor.git#egg=convertor
$ .local/bin/convertor --help
usage: convertor [-h] [--convert FILE [FILE ...] | --webapp]

Convert ODF files from YUSCII to UTF-8. For each file `FILE.odt' will create a
converted `FILE-NEW.odt' in the same directory.

optional arguments:
  -h, --help            show this help message and exit
  --convert FILE [FILE ...]
                        file(s) to convert
  --webapp              run a demo web app

За демо web апликацијата, треба да се инсталира Werkzeug, што е можно и со:

$ pip install --user git+https://github.com/gdamjan/convertor.git#egg=convertor[web]

About

Intelligent yuscii to unicode convertor for ODT files

Resources

License

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.