Como posso contar palavras em documentos complexos (.rtf, .doc, .odt, etc)?
-
20-09-2019 - |
Pergunta
Estou tentando escrever uma função Python que, dado o caminho para um arquivo de documento, retorne o número de palavras desse documento.Isso é bastante fácil de fazer com arquivos .txt, e existem ferramentas que me permitem hackear o suporte para alguns formatos de documentos mais complexos juntos, mas quero uma solução realmente abrangente.
Olhando para a interface de script py-uno do OpenOffice.org e a lista de formatos suportados, pareceria ideal carregar os documentos em um LibreOffice sem cabeça e chamar sua função de contagem de palavras.No entanto, não consigo encontrar nenhum tutorial py-uno ou código de amostra que vá além da geração básica de documentos, e até mesmo os trechos de código que encontrei estão desatualizados há meia década e não funcionam mais.
Seja usando OOo e Uno ou não, como posso obter contagens de palavras confiáveis para documentos de vários formatos?
Solução
carregue os documentos em um OOo sem cabeça e chame seu função de contagem de palavras
Conversor PyOD é um script recente (11-2009) para usar OOo para converter vários tipos de arquivo.Olhando para o script, ele possui carregamento básico de todos os documentos suportados pelo LibreOffice.
É assim que você inicia o OOo como um serviço headless:
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
Então você só precisa escrever um pequeno bootstrapper que chame o OOo na linha de comando, execute seu script e feche o OOo.
Outras dicas
Esta pode não ser a opção para você, mas caso seja, você pode fazer upload de documentos para o Google Docs e exportá-los no formato .txt.O Google geralmente faz um ótimo trabalho na conversão.
Você pode encontrar APIs relevantes aqui: http://code.google.com/intl/pl/apis/documents/docs/1.0/developers_guide_python.html
Dê uma olhada nas seções de login, upload e exportação.