Beste måten å trekke ut tekst fra et Word-dokument uten å bruke COM / automasjon?

stemmer
19

Er det en fornuftig måte å hente ut ren tekst fra en Word-fil som ikke er avhengig av COM automatisering? (Dette er en en funksjon for en web-app utplassert på et ikke-Windows-plattformen -. Det er ikke forhandles i dette tilfellet)

Antiword virker som det kan være et rimelig alternativ, men det virker som det kan bli forlatt.

En Python løsning ville være ideelt, men synes ikke å være tilgjengelig.

Publisert på 03/09/2008 klokken 20:18
kilden bruker
På andre språk...                            


8 svar

stemmer
17

(Samme svar som å trekke ut tekst fra MS Word-filer i python )

Bruk den innfødte Python docx modul som jeg har gjort denne uken. Her er hvordan du kan hente all tekst fra et dokument:

document = opendocx('Hello world.docx')

# This location is where most document content lives 
docbody = document.xpath('/w:document/w:body', namespaces=wordnamespaces)[0]

# Extract all text
print getdocumenttext(document)

Se Python docx nettstedet

100% Python, ingen COM, ingen .net, ingen Java, ingen parsing serie XML med regexs, no dritt.

Svarte 30/12/2009 kl. 12:23
kilden bruker

stemmer
9

Jeg bruker catdoc eller antiword for dette, uansett gir resultat som er lettest å analysere. Jeg har innebygd dette i python funksjoner, så det er lett å bruke fra analyser system (som er skrevet i Python).

import os

def doc_to_text_catdoc(filename):
    (fi, fo, fe) = os.popen3('catdoc -w "%s"' % filename)
    fi.close()
    retval = fo.read()
    erroroutput = fe.read()
    fo.close()
    fe.close()
    if not erroroutput:
        return retval
    else:
        raise OSError("Executing the command caused an error: %s" % erroroutput)

# similar doc_to_text_antiword()

-W bryteren til catdoc slås av linjebryting, BTW.

Svarte 04/09/2008 kl. 08:52
kilden bruker

stemmer
3

Hvis alt du ønsker å gjøre er å trekke ut tekst fra Word-filer (.docx), er det mulig å gjøre det bare med Python. Som Guy Starbuck skrev det, du trenger bare å pakke ut filen, og deretter analysere XML. Inspirert av python-docx, har jeg skrevet en enkel funksjon for å gjøre dette:

try:
    from xml.etree.cElementTree import XML
except ImportError:
    from xml.etree.ElementTree import XML
import zipfile


"""
Module that extract text from MS XML Word document (.docx).
(Inspired by python-docx <https://github.com/mikemaccana/python-docx>)
"""

WORD_NAMESPACE = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
PARA = WORD_NAMESPACE + 'p'
TEXT = WORD_NAMESPACE + 't'


def get_docx_text(path):
    """
    Take the path of a docx file as argument, return the text in unicode.
    """
    document = zipfile.ZipFile(path)
    xml_content = document.read('word/document.xml')
    document.close()
    tree = XML(xml_content)

    paragraphs = []
    for paragraph in tree.getiterator(PARA):
        texts = [node.text
                 for node in paragraph.getiterator(TEXT)
                 if node.text]
        if texts:
            paragraphs.append(''.join(texts))

    return '\n\n'.join(paragraphs)
Svarte 18/12/2013 kl. 16:38
kilden bruker

stemmer
2

Bruke Openoffice API og Python, og Andrew Pitonyak utmerkede online makro bok jeg klarte å gjøre dette. Avsnitt 7.16.4 er stedet å begynne.

En andre tips for å gjøre det arbeidet uten skjermen i det hele tatt er å bruke skjulte eiendom:

RO = PropertyValue('ReadOnly', 0, True, 0)
Hidden = PropertyValue('Hidden', 0, True, 0)
xDoc = desktop.loadComponentFromURL( docpath,"_blank", 0, (RO, Hidden,) )

Ellers dokument vipper opp på skjermen (sannsynligvis på webserveren konsollen) når du åpner den.

Svarte 04/09/2008 kl. 07:45
kilden bruker

stemmer
2

Open Office har en API

Svarte 03/09/2008 kl. 20:20
kilden bruker

stemmer
1

For docx filer, sjekk ut Python-skript docx2txt tilgjengelig på

http://cobweb.ecn.purdue.edu/~kak/distMisc/docx2txt

for uttrekking av ren tekst fra et docx dokument.

Svarte 06/09/2009 kl. 23:44
kilden bruker

stemmer
0

tika-python

En Python-porten på Apache Tika bibliotek, Ifølge dokumentasjonen Apache tika støtter tekst utvinning fra over 1500 filformater.

Merk: Det fungerer også sjarmerende med pyinstaller

Installere med pip:

pip install tika

Prøve:

#!/usr/bin/env python
from tika import parser
parsed = parser.from_file('/path/to/file')
print(parsed["metadata"]) #To get the meta data of the file
print(parsed["content"]) # To get the content of the file

Link til offisiell GitHub

Svarte 18/08/2018 kl. 05:32
kilden bruker

stemmer
0

Dette fungerte bra for DOC og .odt.

Det kaller openoffice på kommandolinjen for å konvertere filen til tekst, som du deretter kan ganske enkelt laste inn python.

(Det synes å ha andre alternativer format, selv om de ikke er apparenlty dokumentert.)

Svarte 08/05/2015 kl. 11:23
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more