Ο καλύτερος τρόπος για την εξαγωγή κειμένου από ένα έγγραφο του Word χωρίς να χρησιμοποιήσετε COM / αυτοματισμού;

ψήφοι
19

Είναι ένας λογικός τρόπος για να εξαγάγετε απλού κειμένου από ένα αρχείο Word που δεν εξαρτάται από την αυτοματοποίηση COM εκεί; (Αυτό είναι το χαρακτηριστικό αα για μια web εφαρμογή αναπτυχθεί σε μια πλατφόρμα μη-Windows -. Αυτό είναι αδιαπραγμάτευτο σε αυτή την περίπτωση)

Antiword φαίνεται όπως θα μπορούσε να είναι μια λογική επιλογή, αλλά φαίνεται σαν να μπορούσε να εγκαταλειφθεί.

Μια λύση Python θα ήταν ιδανικό, αλλά δεν φαίνεται να είναι διαθέσιμες.

Δημοσιεύθηκε 03/09/2008 στις 21:18
πηγή χρήστη
Σε άλλες γλώσσες...                            


8 απαντήσεις

ψήφοι
2

Open Office έχει ένα API

Απαντήθηκε 03/09/2008 στις 21:20
πηγή χρήστη

ψήφοι
2

Χρησιμοποιώντας το API OpenOffice, και Python, και εξαιρετική απευθείας σύνδεση μακρο βιβλίο του Andrew Pitonyak που κατάφερα να το κάνετε αυτό. Ενότητα 7.16.4 είναι το μέρος για να ξεκινήσετε.

Μια άλλη άκρη για να την κάνουμε να λειτουργήσει χωρίς να χρειάζεται την οθόνη σε όλα είναι η χρήση των κρυφών ακίνητο:

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

Σε αντίθετη περίπτωση οι κινήσεις του εγγράφου στην οθόνη (πιθανότατα στην κονσόλα διακομιστή) όταν το ανοίξετε.

Απαντήθηκε 04/09/2008 στις 08:45
πηγή χρήστη

ψήφοι
9

Χρησιμοποιώ catdoc ή Antiword γι 'αυτό, ό, τι δίνει το αποτέλεσμα που είναι το πιο εύκολο να αναλύσει. Έχω ενσωματωμένο αυτό λειτουργεί python, έτσι ώστε να είναι εύκολο στη χρήση από το σύστημα ανάλυσης (το οποίο είναι γραμμένο σε 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 διακόπτης να catdoc σβήνει γραμμή περιτύλιξης, BTW.

Απαντήθηκε 04/09/2008 στις 09:52
πηγή χρήστη

ψήφοι
1

Για docx αρχεία, δείτε το σενάριο Python docx2txt διαθέσιμες στο

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

για την εξαγωγή του απλού κειμένου από ένα έγγραφο docx.

Απαντήθηκε 07/09/2009 στις 00:44
πηγή χρήστη

ψήφοι
17

(Η ίδια απάντηση όπως εξαγωγή κειμένου από αρχεία κειμένου MS σε python )

Χρησιμοποιήστε τη μητρική μονάδα Python docx που έκανα αυτή την εβδομάδα. Εδώ είναι πώς να εξαγάγετε όλο το κείμενο από το έγγραφο:

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)

Δείτε Python docx ιστοσελίδα

100% Python, δεν COM, δεν .net, δεν Java, δεν parsing XML συνέχειες με regexs, δεν χάλια.

Απαντήθηκε 30/12/2009 στις 13:23
πηγή χρήστη

ψήφοι
3

Αν το μόνο που θέλετε να κάνετε είναι να την εξαγωγή κειμένου από τα αρχεία του Word (.docx), είναι δυνατόν να το κάνει μόνο με την Python. Όπως Guy Starbuck το έγραψε, απλά πρέπει να αποσυμπιέσετε το αρχείο και στη συνέχεια να αναλύσει την XML. Εμπνευσμένο από python-docx, έχω γράψει μια απλή λειτουργία για να γίνει αυτό:

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)
Απαντήθηκε 18/12/2013 στις 17:38
πηγή χρήστη

ψήφοι
0

Αυτό λειτούργησε καλά για .doc και .odt.

Καλεί OpenOffice στη γραμμή εντολών για να μετατρέψετε το αρχείο σας σε κείμενο, το οποίο μπορείτε στη συνέχεια απλά να φορτώσετε σε python.

(Φαίνεται να έχουν και άλλες επιλογές μορφής, αν και δεν είναι apparenlty τεκμηριωμένες.)

Απαντήθηκε 08/05/2015 στις 11:23
πηγή χρήστη

ψήφοι
0

Tika-python

Μια θύρα Python της βιβλιοθήκης Apache Tika, Σύμφωνα με την τεκμηρίωση του Apache Tika υποστηρίζει εκχύλιση κείμενο από πάνω από 1500 μορφές αρχείων.

Σημείωση: Επίσης, λειτουργεί όμορφα με pyinstaller

Εγκατάσταση με pip:

pip install tika

Δείγμα:

#!/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

Σύνδεση με τα επίσημα GitHub

Απαντήθηκε 18/08/2018 στις 05:32
πηγή χρήστη

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