COM / otomasyon kullanmadan bir Word dokümanı metin ayıklamak için en iyi yol?

oy
19

COM otomasyon bağımlı değildir bir Word dosyasından düz metin ayıklamak için makul bir yolu var mı? (Bu olmayan bir Windows platformunda dağıtılan bir web uygulaması için aa özelliğidir -. O bu durumda tartışmaya açık olmayan)

makul bir seçenek olabilir gibi Antiword görünüyor, ama terk olabilir gibi görünüyor.

Bir Python çözüm ideal olur, fakat kullanılabilir olmasını görünmüyor.

Oluştur 03/09/2008 saat 21:18
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
2

Open Office bir sahiptir API

Cevap 03/09/2008 saat 21:20
kaynak kullanıcı

oy
2

OpenOffice API kullanarak ve Python ve Andrew Pitonyak mükemmel çevrimiçi makro kitabı Bunu başardı. Bölüm 7.16.4 başlangıç noktasıdır.

Bir başka ipucu bütün Gizli özelliğini kullanmaktır azından ekrana ihtiyaç duymadan çalışmasını sağlamak için:

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

Açmak (muhtemelen web sunucusu konsolda) ekranda Aksi belge hareketleri yukarı.

Cevap 04/09/2008 saat 08:45
kaynak kullanıcı

oy
9

Ben ayrıştırmak için en kolay sonuç verir ne olursa olsun, bunun için catdoc veya antiword kullanın. Ben piton işlevlerde bu gömülü olan, nedenle (Python ile yazılmış olan) ayrıştırma sisteminden kullanımı kolaydır.

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()

catdoc için -w anahtar BTW, satır kaydırma kapanır.

Cevap 04/09/2008 saat 09:52
kaynak kullanıcı

oy
1

docx dosyaları için, mevcut docx2txt Python komut kontrol

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

Bir docx belgeden düz metin ayıklanması için.

Cevap 07/09/2009 saat 00:44
kaynak kullanıcı

oy
17

(Aynı cevabı piton MS word dosyalarındaki metni ayıklanması )

Bu hafta yapılan yerli Python docx modülünü kullanın. İşte bir dokümandan bir bütün metin ayıklamak için:

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)

Bkz Python DOCX sitesini

% 100 Python, hiçbir COM, hiçbir .net, hiçbir Java, regexs ile hiçbir ayrıştırma tefrika XML hiçbir bok.

Cevap 30/12/2009 saat 13:23
kaynak kullanıcı

oy
3

Yapmak istediğiniz tüm Word dosyaları (.docx) metin ayıklamak ise, sadece Python ile yapmak mümkün. Guy Starbuck yazdım gibi, sadece dosya halletmek ve sonra XML ayrıştırmak gerekir. Esinlenerek python-docx, ben yazdım basit işlevi bunu yapmak için:

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)
Cevap 18/12/2013 saat 17:38
kaynak kullanıcı

oy
0

Bu iyi çalıştı .doc ve .ODT için.

Bu daha sonra basitçe piton içine yüklenebilen metin, dosyanızı dönüştürmek için komut satırında openoffice çağırır.

(Onlar apparenlty belgelenmese olsa başka biçim seçenekleri var gibi gözüküyor.)

Cevap 08/05/2015 saat 11:23
kaynak kullanıcı

oy
0

tika-piton

belgelere Apache tika göre Apache Tika kütüphanesinin bir Python liman, 1500 dosya biçimlerinden metin çıkarma destekler.

Not: Aynı zamanda ile büyüleyici çalışır pyinstaller

pip ile yükleyin:

pip install tika

Numune:

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

Resmi bağlantı GitHub'dan

Cevap 18/08/2018 saat 05:32
kaynak kullanıcı

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