LoginSignup
0
0

More than 1 year has passed since last update.

Javaを使用してWordでテキストと画像を抽出する方法

Posted at

この記事では、Javaを使用してWord文書のテキストや画像を抽出または読み取る方法を紹介します。ここでのテキストと画像の抽出には、ドキュメントの本文とヘッダーとフッターのテキストと画像を同時に抽出することが含まれます。

使用したツール:Spire.Doc for Java

JARファイルのインポート方法:

方法1:公式Webサイトからインストールパッケージをダウンロードします。プログラムの下に新しいディレクトリを作成し、名前を付けます(この例ではlibという名前です)。コントロールパッケージのlibフォルダにあるjarを(下の画像1に示すように)プログラムに新しく作成したディレクトリにコピーします。jarファイルをコピーした後、jarファイルを右クリックし、「ライブラリとして追加」を選択します。インポートを完了します(下の画像2のように)。
画像1
01.png

画像2
02.png

方法2:Mavenを介してインポートします。
テストドキュメントは次のとおりです。
03.png

Javaコード一覧

【例1】 Wordのテキストを抽出する

import com.spire.doc.*;
import java.io.FileWriter;
import java.io.IOException;

public class ExtractText {
    public static void main(String[] args) throws IOException{
        //テストドキュメントをロードする
        Document doc = new Document();
        doc.loadFromFile("C:\\Users\\Administrator\\Desktop\\test.docx");

        //テキストを取得してStringとして保存する
        String text = doc.getText();

        //StringをTxt書き込む
        writeStringToTxt(text,"テキストを抽出.txt");
    }
    public static void writeStringToTxt(String content, String txtFileName) throws IOException {

        FileWriter fWriter= new FileWriter(txtFileName,true);
        try {
            fWriter.write(content);
        }catch(IOException ex){
            ex.printStackTrace();
        }finally{
            try{
                fWriter.flush();
                fWriter.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}

テキストを抽出した結果:
04.png

【例2】Wordの画像を抽出する

import com.spire.doc.Document;
import com.spire.doc.documents.DocumentObjectType;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.interfaces.ICompositeObject;
import com.spire.doc.interfaces.IDocumentObject;
import javax.imageio.ImageIO;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class ExtractImg {
    public static void main(String[] args) throws IOException {
        //Wordドキュメントをロードする
        Document document = new Document();
        document.loadFromFile("C:\\Users\\Administrator\\Desktop\\test.docx");

        //Queueオブジェクトを作成する
        Queue nodes = new LinkedList();
        nodes.add(document);

        //Listオブジェクトを作成する
        List images = new ArrayList();

        //ドキュメント内の子オブジェクトをドラパースする
        while (nodes.size() > 0) {
            ICompositeObject node = (ICompositeObject) nodes.poll();
            for (int i = 0; i < node.getChildObjects().getCount(); i++) {
                IDocumentObject child = node.getChildObjects().get(i);
                if (child instanceof ICompositeObject) {
                    nodes.add((ICompositeObject) child);

                    //画像を取得してListに追加する
                    if (child.getDocumentObjectType() == DocumentObjectType.Picture) {
                        DocPicture picture = (DocPicture) child;
                        images.add(picture.getImage());
                    }
                }
            }
        }
        //画像をPNG形式のファイルとして保存する
        for (int i = 0; i < images.size(); i++) {
            File file = new File(String.format("画像-%d.png", i));
            ImageIO.write((RenderedImage) images.get(i), "PNG", file);
        }

    }
}

画像を抽出した結果:
05.png

今回のWordでテキストと画像を抽出する方法は以上でした、最後まで読んでいただきありがとうございます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0