Autor Zpráva
stepanka
Profil *
Ahoj,

nevíte prosím někdo o nějaké knihovně, která by dokázala převést soubory MS Office (doc, docx, xls, xlsx, ppt, pptx, ...) a PDF do plaintextu? Nějaké jsem našla, ale většinou to zvládne jen jeden, nebo pár, formátů ze zde uvedených. Ráda bych našla něco komplexnějšího.. Nemáte s tím někdo zkušenosti?

Předem mockrát děkuju.
sysel
Profil
Také jsem pátral, ale nic moc. Problém je hlavně v tom, že většina uvedených formátů je "cílových" a v případě M$ i často uzavřených. Na Macu je hypotetická možnost přimět M$ Word programovým pokynem k exportu pomocí AppleScriptu, ale protože používám OOo, současný stav ochoty M$ Office spolupracovat s AppleScriptem neznám.

U PDF je situace ještě k tomu komplikovaná tím, že text je ukládán v kódování, které závisí na platformě. Při zobrazení se s tím Acrobat celkem snadno popere, často si PDF nese v sobě i použitý font, ale na obrazovce už jsou jen pěkné obrázky, a jen málokdy lze vypreparovat nějak jednoduše text. Dílčí prográmky jsem také našel, ale nic moc a ještě většina byla pod Windousy.

Takže není zač. :-(
stepanka
Profil *
sysel:
Děkuju za reakci. A s tímto zkušenosti nemáš?
sysel
Profil
Popravdě - nemám. Podle popisu to vypadá velmi zajímavě. Řekl bych - účel si nachází prostředky. Indexování dokumentů pro účely rychlého prohledávání je dle mého jednodušší, přesněji jiná, úloha než vypreparování obsaženého(ých) textu(ů). Opět se pokusím ilustrovat na lépe známějším PDF.
Protože je to především nástupce PostScriptu, text uvnitř velmi výrazně ztrácí vnitřní souvislost - je nemilosrdně rozsekán na řádky, čímž se mohou roztrhnout i jednotlivá slova - je podle grafických pravidel rozmístěn úhledně po stránce a jednotlivé vrstvy zobrazení mezi sebou řeší překrývání a v dnešní době i průhlednost, což někdy může dopadnout i tak, že se písmenka definitivně přerastrují do pixlů a máš utrum. Z tohoto chaosu obnovit plně textovou souvislost návaznost celistvost je těžko automatisovatelný proces. Ale objevit v tom falangy slov a opatřit si tak přehled, kde se co nachází je úloha s jistými výhradami řešitelná.

Nu snad se jednou dočkáme, že textové procesory budou křížový index slov a výrazů automaticky vytvářet v XML při ukládání dokumentu. :-)

P.S. můj kolega už před třiceti lety chválil digitální techniku za velmi ekologické urychlení procesu - vymysli - napiš - publikuj - vyhoď - zapomeň, jinými slovy: garbage in - garbage out.
P.P.S. není mi jasné, z čeho budou archeologové příštích tisíciletí rekonstruovat naše jazyky :-D
stepanka
Profil *
sysel:
opět moc děkuju za reakci. A s indexováním dokumentů nějaké zkušenosti máš? Nějaké doporučené knihovny, nebo tak? Je pravda, že dokumenty budu převádět do plaintextu jen kvůli tomu, aby se v nich později dalo vyhledávat. Očekávala jsem tuto cestu jednodušší. Pokud je ale jednodušší cesta přes indexování, nejsem proti...

Ještě jednou díky.
sysel
Profil
Nejsem, bohužel, expert na všechno, a odpověděl jsem hlavně proto, že se k tomu jiní neměli. :-( Pokud bych se do toho měl pustit sám, asi bych se obrátil na nějakou knihovnu, která se v daném formátu alespoň trochu vyzná, vykrade mi z něj použitelná slova s jejich umístěním a pak to vše s důvěrou vložil do MySQL. Věřím, že v opravdových programátorech se nad tímto vyjádřením vzedme vlna nevole, ale pokud mě nikdo za vyškolení na experta v indexování databází nepatí, s klidem strpím nevraživé pohledy svých soukmenovců a provedu to cestou nejmenšího odporu.

BTW kdysi jsem četl o jakési úsporné fintě na ukládání textových souborů vůbec - texty byly na vstupu rozsekány na částečky, někdy až pod úrovní slov, oindexovány a vytvořen binární strom, jehož plody nesly informaci, kde se příslušná falanga slova nachází. Mělo se tím dosahovat najendnou neobyčejné úspory potřebného datového prostoru a zároveň drastického urychlení fultextového vyhledávání. Ale já už něco pamatuju, takže mám dojem, že to vznikalo ještě v době disket :-)
stepanka
Profil *
sysel:
Děkuju, jsem moc vděčná i za pomoc od "neexperta". Pokusím se nějakou knihovnu nalézt sama, jen poslední věc... Píšeš

a pak to vše s důvěrou vložil do MySQL
Vložil do MySQL? Myslela jsem, že při indexování se do databáze nic nevkládá. Že do databáze bych obsah vkládala jen pokud bych ho nejdříve převedla na obyčejný text. Indexování neprobíhá přímo v daném *.pdf souboru? Co to indexování vlastně přesně znamená?
sysel
Profil
Jsem programátorem jen ze zájmu a budu psát hodně laicky: index je po latinsku ukazováček (jinak latina jednotlivé prstíky samostatně nepojmenovává - obecně je prst digitus). Při hledání v seznamu jde o to, nalézt co nejrychleji záznam, který obsahuje mnou vybranou položku. V tom nám může významně pomoci uspořádání seznamu - třebas podle abecedy. Ale takové uspořádání lze provést jen podle jedné položky - kupř. příjmení. Indexové soubory tuto nedostatečnost řeší a jejich vytvořením pro další položky můžeme využívat urychlené hledání i pro např. jmeniny, datum narození atd. Indexový soubor je - laicky - pro tabulku záznamů doprovodná položka, která obsahuje pořadová čísla záznamů v takovém sledu, jako kdyby byla databáze uspořádaná podle dané položky. Schopnost vytváření a automatické aktualisace indexových souborů při změně záznamů je součástí engine každé slušnější databáze.

Indexování pro fultextové vyhledávání je vlastně z tohoto pohledu vytvoření databáze slov a jejich umístění v textu a setřídění této databáze abecedně podle slov nebo i frází. V textu jsou slova seřazena podle umístění (aby nám dávala ve větách smysl) :-) Velmi sofistikované indexy obsahují odakazy nejen na celá slova, ale i na jejich částečky, a v mnoha jazycích se pátrá i podle kořenvých částí, které mohou mít i poněkud odlišné tvary (dítě - děti). Od kolegů z Oscara (firma, která vytváří ASPI sytém právních informací), jsem se dozvěděl, že oni v textu vyhledávají i synonymicé vztahy (silnice - ulice - cesta - pěšina - dálnice ..) protože z hlediska právních vazeb to může pomoci vyhledat více hodnotných odkazů.

Z výše uvedeného je možno pochopit, proč jsem, namísto tvrdé programátorské školy, která si v třídících algoritmech libuje, navrhnul využití schopností každé fungující databáze. MySQL jsem tak trochu plácnul, častečně i proto, že je dostupná na všech platformách a řeší celkem slušně češtinské záležitosti. Stejně dobře by posloužil PostgreSQL nebo jiné. Pokud je cílem samostatný produkt, pak DB může posloužit jen pro vytvoření indexů a v produktu s hotovými indexy může pracovat nějaký Váš vlastní program. Pokud je cílem internetová presentace, DB může s výhodou sloužit na pozadí ve spolupráci s PHP popř jiným scriptovacím jazykem.

Je nutno předem velmi pečlivě analysovat daný text a jeho rozsah a zvážit jak hluboko umožníme uživateli fultextové hledání. V knížce o sto stránkách počítejme s takovými 20.000 slovy, z nichž mnohá se opakují. samostatných písmenek je v textu jen kolem pětatřiceti, ale počet opakování je naproti tomu obrovský. Vyhledavače proto často omezují minimální počet zadaných písmen nejméně na pět, čímž se mohutnost databáze velmi výrazně zmenší. Vyhledávání frází a slovních spojení nemusíme cpát do DB, ale využívat konjunkci výskytu dvou slov, což vyjde objemově lépe a časovou prodlevu nikdo z lidí nezaregistruje.

Disclaimer: Prosím, neberte si osobně, pokud jsem zde vysvětloval triviality, které dávno znáte, nebo používal příliš laických termínů, což Vás mohlo urazit. Pokusil jsem se psát i s ohledem na další laiky, které by to mohlo zajímat. :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: