30.5.06

Pedeefki i metadane

Największym skarbem dla każdego naukowca (w szerszym tego słowa znaczeniu, czyli również dla filozofa) są artykuły naukowe. A artykuły naukowe to PDF-y. Zatem, najcenniejszą zawartością dysku naukowca (zaraz po jego własnych pracach) jest kolekcja artykułów, czyli tzw. pedeefki (doskonale to wie Wielki Człowiek ze Szczecina, który w chwili grozy wywołanej lekkim zwisem komputera często krzyczy ,,Moje pedeefki! Co się stało z moimi pedeefkami!'').

Niestety, wraz z upływem czasu kolekcja pedefków staje się coraz trudniejsza do wykorzystania. Kiedy plików jest 20, mniej więcej wiadomo, co w którym jest. Kiedy plików mamy 200, znalezienie interesującego nas pliku zależy przede wszystkim od szczęścia.

Jeszcze niedawno były jedynie dwie metody zaprowadzenia porządku w kolekcji pedefków, obie wymagające sporego wysiłku, druga większego niż pierwsza. Po pierwsze, można było starannie nazywać pliki i układać je w bardzo przemyślną strukturę katalogów, np. czasopismami, latami albo dziedzinami. Nie da się jednak przewidzieć, jakie kryteria wyszukiwania będą nas interesować, powiedzmy, za dwa lata. Można więc stosować drugą metodę, czyli oprócz przemyślnego systemu nazywania plików prowadzić bazę danych, gdzie artykuły są dokładnie opisane. Nie muszę mówić, że o ile już pierwsza metoda wymagała dużej samodyscypliny, o tyle druga jest po prostu diablo upierdliwa.

Ostatnio na całe szczęście sytuacja się zmieniła na lepsze. Acrobat Reader potrafi szukać pośród PDF-ów (aż dziwne, że dopiero teraz -- w końcu PDF to, upraszczając, skompresowany PostScript), Google Desktop Search wejdzie prawie wszędzie, a i dla Google Scholar PDF nie jest już nieprzenikliwy. A pod Linuksem Gnome Search coraz lepiej naśladuje Gógla.

Niestety, poprawa jest tylko pozorna. O ile nie ma problemu z przeszukiwaniem PDF-ów, które sami stworzyliśmy bądź ściągniętych ze strony domowej autora, o tyle wszystkie PDF-y ściągnięte z baz typu JSTOR to nic innego jak... skany z czasopism. A one, jako obrazki, powiedzą tyle naszej wyszukiwarce, ile nam skompresowany nieznanym algorytmem plik.

Czy jest jakieś rozwiązanie tego problemu? Ano, jest. Format PDF jest, wbrew pozorom, bardzo sprytnym formatem. PostScript, załączniki, obrazki... I, co nas najbardziej interesuje, metadane. Oznacza to, że do pliku można dołączyć informację opisującą informację, którą zawiera sam plik. Standardowe pola są dość oczywiste, i powinny nam akurat wystarczyć do opisania plików w sposób wyszukiwarko-przyjazny: autor, tytuł, krótkie streszczenie, słowa kluczowe... Zachęcony swym odkryciem, postanowiłem sprawdzić, jak opisane są dokumenty np. JSTORA. I tu pierwszy zgrzyt, bo one nie są w ogóle opisane. Byłem tez ciekaw, jak sobie radzą z tym problemem znajomi, więc przejrzałem metadane w PDF-ie z pracą magisterską Kuby Szymanika. Dowiedziałem się, że liczy sobie 42 strony i że jej tytuł bzmi C:/Documents and Settings/qba/Pulpit/semantyka algorytmiczna/pracka/pracka.dvi...

Dlatego postanowiłem opisać, co należy zrobić, aby z metadanymi pedeefków było dobrze :-)

Po pierwsze, istnieją kilka sposobów aby sobie przeczytać metadane pedeefka. Po pierwsze, możemy go otworzyć w Acrobat Readerze albo czyms podobnym i zrobić sobie File > Document Properties (lub po prostu Ctrl+D). Po drugie, przynajmniej w Gnomie, możemy sobie obejrzeć metadane we właściwościach pliku (choć widać je kiepsko, bo ich długość jest ograniczona). Po trzecie, możemy skorzystać ze specjalnych pakietów typu extract(1) albo pdftk(1). Oba są są Open Source, oba są spakietowane pod Debianem i Ubuntu, a pdftk ma jeszcze wersję łindołsową.

extract ma ambicję byc uniwersalnym narzędziem ekstrahującym różne przydatne rzeczy z plików. Potrafi nawet wyrzucić informację z PDF-a jako rekord BibTeX-owy. A przynajmniej potrafił do wczoraj, bo wypuścili nową wersję, która jest zepsuta (błąd już zgłosiłem).

pdftk z kolei to cały kombajn pozwalający nam na różne sztuczki z PDF-ami, który opiszę szczegółowiej poniżej. Jego obsługa jest dość toporna, ale całkiem prosto go zmusić do wypisania informacji na temat pliku:
bies@quine:~/Opole$ pdftk Dziobak.pdf dump_data
InfoKey: Creator
InfoValue: LaTeX with hyperref package
InfoKey: Title
InfoValue: Meaning, Hintikka's thesis, and computational complexity
InfoKey: Producer
InfoValue: pdfeTeX-1.21a
InfoKey: Author
InfoValue: Ryszard Szopa
InfoKey: Keywords
InfoValue: theory of meaning, P vs. NP, Hintikka's thesis, Edmonds' thesis
InfoKey: PTEX.Fullbanner
InfoValue: This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4
InfoKey: Subject
InfoValue: I discuss some natural language constructions that turn to be very difficult from the computational point of view and consider what this means for the theory of meaning.
InfoKey: CreationDate
InfoValue: D:20060528155926+02'00'
PdfID0: b159ce5e5e9d4ea86e562db5ccbefca0
PdfID1: b159ce5e5e9d4ea86e562db5ccbefca0
NumberOfPages: 8

Oczywiście najważniejszą kwestią jest metoda dodania metadanych do własnych plików. Jeżeli pracujemy w LaTeX-u, jest to banalnie proste. Wystarczy dodać w preambule następujące coś:
\pdfinfo
{ /Title (Moje arcydzieło)
/Creator (Ryszard Szopa)
/Author (Szopa, Ryszard)
/Subject (Krótko dowodzę jaki jestem fajny.)
/Keywords (pyszczki, szopa, fajni ludzie)
}
lub, jeżeli używamy pakietu hyperref,
\usepackage[pdftex,
pdfauthor={Ryszard Szopa},
pdftitle={Moje arcydzieło},
pdfsubject={Krótko dowodzę jaki jestem fajny.},
pdfkeywords={pyszczki, szopa, fajni ludzie}]{hyperref}

Tyle jeśli chodzi o ułatwianie życia innym. Najczęściej jednak będzie się zdarzać, że będziemy chcieli opisać cudze pliki, np. z JSTOR-a. I tu właśnie okazuje się niesamowicie przydatny pdftk. Jest to, jak już napisałem, cały kombajn. Potrafi nałożyć hasło na pedeefka, zdjąć hasło, każdą stronę zapisać w osobnym pliku, no i, wreszcie, zmieniać metadane. Jedyna wada jest to, że działa z linii komend i ma straszliwie ciemną składnię wywołania. Na szczęście, istnieje graficzna nakładka, czy też dwie, bo jedna w Perlu (dla Linuksa), a druga w VBScript (dla Łindołsa).

Brak komentarzy: