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!
- 426 megtekintés
Hozzászólások
A kerdes masodik felet a ‘wc -c’ megmondja.
- A hozzászóláshoz be kell jelentkezni
Egy formázott, bináris (lásd DOC) dokumentumnál?
A magyar ember jelképe a hátrafelé nyilazás. Vakon rohanunk a semmibe, miközben a múltunkat támadjuk.
- A hozzászóláshoz be kell jelentkezni
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. :)
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
A -c igen, byte-tot szamol, de a -m nem, es a probakeppen megnezett file-omom helyesen meg is mondta a character count-ot. :)
- A hozzászóláshoz be kell jelentkezni
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"
A magyar ember jelképe a hátrafelé nyilazás. Vakon rohanunk a semmibe, miközben a múltunkat támadjuk.
- A hozzászóláshoz be kell jelentkezni
Valoban nem jo, en neztem be. Szoval elnezest, nem akartam felrevezeto lenni. Marad ra valami celeszkoz.
- A hozzászóláshoz be kell jelentkezni
.
- A hozzászóláshoz be kell jelentkezni
.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?
- A hozzászóláshoz be kell jelentkezni
Szia!
Az oldalak számának pontosnak kell lennie, a karaktereknél kb. 5% eltérés megengedett.
A magyar ember jelképe a hátrafelé nyilazás. Vakon rohanunk a semmibe, miközben a múltunkat támadjuk.
- A hozzászóláshoz be kell jelentkezni
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.?)
- A hozzászóláshoz be kell jelentkezni
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.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
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.
A magyar ember jelképe a hátrafelé nyilazás. Vakon rohanunk a semmibe, miközben a múltunkat támadjuk.
- A hozzászóláshoz be kell jelentkezni
Hát nem ezt írtuk le többször is? Az egy metaadat, mindenki azt ír bele, amit nem szégyell.
Most direkt megnéztem: a tegnap kapott 22 .docx fájlból 6-nál nem stimmelt. Minden fájlt ugyanattól az embertől, ugyanarról a gépről kaptam.
- A hozzászóláshoz be kell jelentkezni
libreoffice --headless --convert-to txt {*.odt|.docx|...} - | wc -c
De így érdekes számok jöhetnek ki, pl hasábok használata esetén.
- A hozzászóláshoz be kell jelentkezni
+ a pdf-re konvertálás hasonlóan megoldható headless módban, ott meg már lehet oldalakat számolni.
“Any book worth banning is a book worth reading.”
- A hozzászóláshoz be kell jelentkezni
Megelőztél.
Annyival kiegészíteném, hogy vannak olyan Perl modulok (más nyelvhez is biztosan), amik eleve azért jöttek létre, hogy a szövegmanipulációt meg lehessen oldani parancssorból. Úgy emlékszem, a doc fájlokra is létezik modul.
READY.
▓
- A hozzászóláshoz be kell jelentkezni
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~
- A hozzászóláshoz be kell jelentkezni
Igen, a Tika jó eszköz, végső megoldásként jó lehet, csak (szerintem) nagyon erőforrás-igényes.
A magyar ember jelképe a hátrafelé nyilazás. Vakon rohanunk a semmibe, miközben a múltunkat támadjuk.
- A hozzászóláshoz be kell jelentkezni
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.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
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.
“Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”
- A hozzászóláshoz be kell jelentkezni
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.)
- A hozzászóláshoz be kell jelentkezni
É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á.
A magyar ember jelképe a hátrafelé nyilazás. Vakon rohanunk a semmibe, miközben a múltunkat támadjuk.
- A hozzászóláshoz be kell jelentkezni
Lehetséges, hogy nem Word-del/Writer-rel készült a dokumentum, és a creator program nem foglalkozott a leírófájllal?
- A hozzászóláshoz be kell jelentkezni
Nem tudom, de ide bárki tölthet fel dokumentumot, szóval bármi lehetséges.
A magyar ember jelképe a hátrafelé nyilazás. Vakon rohanunk a semmibe, miközben a múltunkat támadjuk.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni