Szöveges dokumentum - oldalak és karakterek száma

Fórumok

Sziasztok!

Ismertek olyan parancssoros eszközt Linux alá, amivel egy szöveges dokumentumból lekérdezhető az oldalak és karakterek száma? Első körben a DOC, DOCX, PDF a téma, és a képként szkennelt dokumentumok nem játszanak.

PDF-hez a pdfinfo jónak tűnik, viszont a DOCX (és különösen a DOC) macera. Több eszközt is próbáltam már, eddig legtovább az exiftool vitt, ami általában jó (és jól feldolgozható) eredményt adott. Viszont most kaptam egy 10 oldalas DOCX-et, ami az exiftool szerint csak egyetlen oldal. A dokumentumban nincs kép, viszont összetettebben formázott (pl. tartalomjegyzék). Sajnos a dokumentumot nem tehetem közzé.

Szóval ez a false eredmény miatt keresek alternatívát. Engem az sem zavarva, ha LibreOffice indulna headless módban, de sajnos nem tudja visszaadni a dokumentum statisztikáját.

Köszönöm!

Hozzászólások

A kerdes masodik felet a ‘wc -c’ megmondja.

Abbol indultam ki, hogy valahogy/valamivel kepes vagy megnyitni, ami reven atadhatod a wc-nek, de ha nem igy van, bocs, nem szoktam ilyesmivel foglalkozni. Ha docx, az egy zip, amiben xml-ben vannak a dolgok, abbol meg esetleg ki lehet imdulni, de ez megint csak tipp.

Edit: sima doc-ot most megneztem, ott bizony a wc siman megmondta a karakterszamot, tegy egy probat, legfeljebb mukodik. :)

Mármint a wc simán megmondta, hogy hány bájt az a file ;)

Viszont vicces, de a sima docrol a 'file' elmondja, hogy szerinte hány char meg world, bár a véleménye a random próbán nem egyezett a libreofficéval.

Én lehet, hogy megpróbálkoznék pandoccal dumpolni a benne levő textet, az egész sok mindent megért, és azt wc-zni. pdfet mondjuk ha jól emlékszem nem beszél, azt valami mással kell 2txt-zni.

Beton biztos így se lesz, lehet hogy némi nézegetés után még utószűrnék szemétre, mert a jó isten se tudja, hogy pl egy táblázat hogy jelenik meg.

Akkor valami nagyon eltérő lehet. Itt egy teszt-dokumentum: https://www.dropbox.com/s/2n4ml18b2dwdd5b/arvizturo.doc?dl=0

Nézd meg, hogy mit mond rá a LibreOffice és mit számol a "wc -m"

„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…

Szerkesztve: 2020. 05. 30., szo - 21:30

.

Szerkesztve: 2020. 05. 30., szo - 22:16

.doc és .docx esetén az oldalszám elég problémás, ugyanis amit az exiftool mond, azt nem légből kapja, hanem tényleg az szerepel a fájl metaadataiban. Aminek viszont egy szövegszerkesztő esetén gyakorlatilag nincs értelme. Ezeket (ha erőforrásigény nem gond) LO-val PDF-be exportálnám, annak az oldalszámát meg már meg tudtad állapítani.

Van docx2txt, abból a karakterszám megvan (nagyjából, mert pl. a review-k miatt problémáid lesznek). PDF-ben a karakterek számlálása már sokkal keményebb dió, mert ott számolni kellene elválasztójelekkel és a ligatúrákkal. Mire kell? Mennyire kell, hogy pontos legyen?

Akkor a PDF-be konvertálás az oldalszámproblémádat megoldja.

De a leütésszám szerintem mindenképpen szívás, annyi sz*rt láttam már bejövő Word fájlokban, hogy automatán 5%-os pontosságot biztosan nem mernék bevállalni. (Mi lesz a változáskövetés karaktereivel, a mezőértékekkel, a rejtett szövegekkel stb.?)

Igen, de azt értsd már meg, hogy a Word doc(x) formátum lényegében egy leírónyelv-alapú formátum, csak a doc bináris, a docx meg XML/plain text alapú. De ezeknek a low level szintjén NEM léteznek oldalak, csak szöveg és formázás, meg beágyazott dolgok. Azt nem tárolja el, hogy mi hányadik oldalra kerül, ezt a Word (meg pl. az LO Writer) dönti el, mikor megnyitja az egész anyagot, és vonatkozó helyi dokumentumsablon és egyéb dokumentum/megjelenítési beállítások alapján elkezdi tördelni, utána derül ki, hogy hány oldal lett. Ezt te kívülről, a vonatkozó programban megnyitást mellőzve nem fogod tudni, hogy hány oldalas. Lényegében ehhez a doksit le kell renderelni a megfelelő programban elejétől a végéig, nem lehet számolgatni, meg trükközni.

Ez épp olyan, mint egy böngészőben megnyitott HTML oldal. Egy doksi, amit tudsz görgetni. Hogy hány oldalas, az attól függ, hogy milyen beállításokkal tördeled pl. nyomtatásnál. Ugyanaz a szöveg/doksi kisebb oldalakra tördelésnél csak még több oldalra fog kiférni.

Ha kiszámítható adatokat akarsz, arra a PDF való, az nem csak minden eszközön és nyomtatón ugyanúgy jelenik meg, de az oldalszám sem változik.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Na várj csak, az az érdekes, hogy pl. a docx tartalmazza metadatként az oldalak számát, lásd lejjebb. Csak néhány esetben rosszul.

„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…

Szerkesztve: 2020. 05. 30., szo - 22:16

libreoffice --headless --convert-to txt {*.odt|.docx|...} - | wc -c

De így érdekes számok jöhetnek ki, pl hasábok használata esetén.

Apache Tika, ki lehet a szöveget extractolni bármilyen állományból (pdf/doc,docx,ppt,excel stb. szövegbányászatra használtuk) https://tika.apache.org/

~ubuntu, raspbian, os x~

Ha nagyon nem megy maskepp, az ujabb office formatumokhoz letezik python library, esetleg le tudod kodolni (meg kell nezni a doksijat). Eddig csak Excelhez hasznaltam, docx-hez nem, nemtom tudja-e alapbol, es ha igen, mennyi kodolas aran.

When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Ilyet nem lehet, amit akarsz. Még csak docx-nél pandoc-kal át lehet konvertálni plain textre, amit wc-be (nem a klozetra gondolok, ha-ha) bepipe-olva ki lehet nyerni szószámot, karakterszámot. De pl. oldalszámot sehogy nem tudsz kinyerni, mert azt a grafikus program tördeli dinamikusan a képernyő felbontása, és grafikus beállításoknak megfelelően.

A doc még problémásabb, mert bináris formátum. Lehet valami nonfree CLI konverter van erre is, amivel át lehet megint pipe-olni a wc parancsnak, de az oldalszámot ezzel is bukod.

Amivel még rá lehetne menni, hogy windowsos gépen vagy virtuális gépen minden vonatkozó doc, docx fájlt ráküldesz egy általad meghatározott default beállításokkal bíró pdf-nyomtatóra, ami szépen pdf-et csinál az összesből, azokat talán meg lehet etetni valami linuxos konverterrel, és kiértékelni az egészet.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Szerkesztve: 2020. 05. 31., v - 07:32

docx-nél:

docProps/app.xml

<Pages>4</Pages>

<Words>917</Words>

<Characters>6331</Characters>

(Csak egy fájlnál néztem meg, de annál jól mondta.)

És akkor itt jön ki jól, hogy mi a hiba. Itt egy minta-dokumentum, ahol ez az érték 1, ezért az exiftool is ennyit mond. Közben minden általam próbált office program 10 oldalra törte és a statisztikában is ennyit mondott. Viszont ebben következetesek voltak, vagyis mindegyik program beállítástól függetlenül ugyanannyit mondott rá.

„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…

Ha megnyitom libreoffice-szal, és elmentem másként, akkor nálam a zip-ben direkt rosszul felvett meta értékeket a libreoffice kicseréli valós értékekre.

(a sima mentés nem működik, ha nincs a fájlban változás, akkor nem ment a LO)

Esetleg egy headless LO-szal egy ideiglenes könyvtárba másolatokat készíteni az összes fájlról, és azokban számolgatni?