
Em vários casos, pode ser necessário extrair texto programaticamente de documentos Word. Por exemplo, para análise de texto, extração de seções específicas, etc. Para tais casos, este artigo fornece um método rápido e fácil de implementar para extrair texto de documentos Word em Java. Além disso, permitirá que você extraia texto entre diferentes seções/elementos de um documento Word.
- Biblioteca Java para Extrair Texto de Word DOC DOCX
- Extração de Texto em Documentos Word
- Extrair Texto de um Documento Word em Java
Biblioteca Java para Extrair Texto de Documentos Word
Aspose.Words for Java é uma biblioteca poderosa que permite criar documentos MS Word do zero. Além disso, permite manipular documentos Word existentes para criptografia, conversão, extração de texto, etc. Usaremos esta biblioteca para extrair texto de documentos Word DOCX ou DOC. Você pode baixar o JAR da API ou instalá-lo usando as seguintes configurações do Maven.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>22.6</version>
<type>pom</type>
</dependency>
Compreendendo a Estrutura de um Documento Word
Um documento MS Word consiste em vários elementos, que incluem parágrafos, tabelas, imagens, etc. Portanto, os requisitos de extração de texto podem variar de um cenário para outro. Por exemplo, você pode precisar extrair texto entre parágrafos, marcadores, comentários, etc.
Cada tipo de elemento em um DOC/DOCX Word é representado como um nó. Portanto, para processar um documento, você terá que trabalhar com os nós. Vamos começar e ver como extrair texto de documentos Word em diferentes cenários.
Extrair Texto de um DOC Word em Java
Nesta seção, vamos implementar um extrator de texto Java para documentos Word e o fluxo de trabalho da extração de texto será o seguinte:
- Primeiro, definiremos os nós que queremos incluir no processo de extração de texto.
- Em seguida, extrairemos o conteúdo entre os nós especificados (incluindo ou excluindo os nós de início e fim).
- Finalmente, usaremos a cópia dos nós extraídos, por exemplo, para criar um novo documento Word consistindo do conteúdo extraído.
Agora vamos escrever um método chamado extractContent para o qual passaremos os nós e alguns outros parâmetros para realizar a extração de texto. Este método analisará o documento e clonará os nós. Os seguintes são os parâmetros que passaremos para este método.
- startNode e endNode como pontos de início e fim para a extração do conteúdo, respectivamente. Estes podem ser nós de nível de bloco (Paragraph, Table) ou de nível inline (por exemplo, Run, FieldStart, BookmarkStart, etc.).
- Para passar um campo, você deve passar o objeto correspondente FieldStart.
- Para passar marcadores, os nós BookmarkStart e BookmarkEnd devem ser passados.
- Para comentários, os nós CommentRangeStart e CommentRangeEnd devem ser usados.
- isInclusive define se os marcadores estão incluídos na extração ou não. Se esta opção estiver definida como falsa e o mesmo nó ou nós consecutivos forem passados, uma lista vazia será retornada.
A seguir está a implementação completa do método extractContent que extrai o conteúdo entre os nós que são passados.
Alguns métodos auxiliares também são necessários para o método extractContent para realizar a operação de extração de texto, que são dados abaixo.
Agora estamos prontos para utilizar esses métodos e extrair texto de um documento Word.
Extrair Texto entre Parágrafos de um Documento Word
Vamos ver como extrair conteúdo entre dois parágrafos em um documento DOCX Word. Os seguintes são os passos para realizar esta operação em Java.
- Primeiro, carregue o documento Word usando a classe Document.
- Obtenha a referência dos parágrafos de início e fim em dois objetos usando o método Document.getFirstSection().getChild(NodeType.PARAGRAPH, int, bool).
- Chame o método extractContent(startPara, endPara, true) para extrair os nós em um objeto.
- Chame o método auxiliar generateDocument(Document, extractedNodes) para criar um documento consistindo do conteúdo extraído.
- Finalmente, salve o documento retornado usando o método Document.save(String).
O seguinte exemplo de código mostra como extrair texto entre o 7º e o 11º parágrafos em um DOCX Word em Java.
Extrair Texto entre Diferentes Nós de um Documento Word
Você também pode extrair conteúdo entre diferentes tipos de nós. Para demonstração, vamos extrair conteúdo entre um parágrafo e uma tabela e salvá-lo em um novo documento Word. Os seguintes são os passos para extrair texto entre diferentes nós em um documento Word em Java.
- Carregue o documento Word usando a classe Document.
- Obtenha a referência dos nós de início e fim em dois objetos usando o método Document.getFirstSection().getChild(NodeType, int, bool).
- Chame o método extractContent(startPara, endPara, true) para extrair os nós em um objeto.
- Chame o método auxiliar generateDocument(Document, extractedNodes) para criar um documento consistindo do conteúdo extraído.
- Salve o documento retornado usando o método Document.save(String).
O seguinte exemplo de código mostra como extrair texto entre um parágrafo e uma tabela em um DOCX Word usando Java.
Obter Texto Entre Parágrafos com Base em Estilos
Vamos agora verificar como extrair conteúdo entre parágrafos com base em estilos. Para demonstração, vamos extrair conteúdo entre o primeiro “Título 1” e o primeiro “Título 3” no documento Word. Os seguintes passos demonstram como alcançar isso em Java.
- Primeiro, carregue o documento Word usando a classe Document.
- Em seguida, extraia parágrafos em um objeto usando o método auxiliar paragraphsByStyleName(Document, “Heading 1”).
- Extraia parágrafos em outro objeto usando o método auxiliar paragraphsByStyleName(Document, “Heading 3”).
- Chame o método extractContent(startPara, endPara, true) e passe os primeiros elementos em ambos os arrays de parágrafos como primeiro e segundo parâmetros.
- Chame o método auxiliar generateDocument(Document, extractedNodes) para criar um documento consistindo do conteúdo extraído.
- Finalmente, salve o documento retornado usando o método Document.save(String).
O seguinte exemplo de código mostra como extrair conteúdo entre parágrafos com base em estilos.
Extrator de Texto Word Gratuito para Java
Você pode obter uma licença temporária gratuita para extrair texto de documentos Word sem limitações de avaliação.
Explore a Biblioteca Java DOCX
Você pode explorar outros cenários de extração de texto de documentos Word usando este artigo de documentação. Além disso, você pode explorar outros recursos do Aspose.Words para Java usando a documentação. Caso tenha alguma dúvida, sinta-se à vontade para nos informar através do nosso [fórum][8].
Conclusão
Neste artigo, você aprendeu como extrair texto de documentos Word em Java. Além disso, você viu como extrair conteúdo entre tipos semelhantes ou diferentes de nós em um DOC ou DOCX programaticamente. Assim, você pode construir seu próprio extrator de texto MS Word em Java.