チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»docpythontext

Displaying items by tag: docpythontext

Word の検索と置換機能は、文書内のテキストを効率的に更新するための便利な手段です。手作業による検索や編集の手間を省き、文書全体の対象テキストを一括で置換できます。これにより、作業時間を短縮できるだけでなく、すべての該当箇所が確実に更新されるため、一貫性のある修正が可能です。本記事では、Spire.Doc for Python を使用して、Python で Word 文書内のテキストを検索して置換する方法を紹介します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Word 文書内のテキスト検索と全置換

Document.Replace() メソッドを使用すると、特定のテキストを検索し、そのすべての該当箇所を別のテキストに置換できます。詳細な手順は以下のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.Replace() メソッドを使用して、特定のテキストを検索し、すべての該当箇所を新しいテキストに置換します。
  • Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。
  • Python
from spire.doc import Document

# Document オブジェクトを作成します
document = Document()

# Word 文書を読み込みます
document.LoadFromFile("Sample.docx")

# 指定したテキストを検索し、すべての出現箇所を別のテキストに置換します
document.Replace("ビタミン", "Vitamin ", False, True)

# 置換後の文書を保存します
document.SaveToFile("output/すべての検索と置換.docx")
document.Close()

Word 文書内のテキスト検索と全置換

Word 文書内のテキスト検索と最初の置換

Spire.Doc for Python では、Document.ReplaceFirst プロパティを使用することで、すべての該当箇所ではなく、最初の該当箇所のみを置換するモードに変更できます。以下の手順で、最初の該当箇所のみを置換する方法を説明します。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.ReplaceFirst プロパティを True に設定し、最初の該当箇所のみを置換するモードに変更します。
  • Document.Replace() メソッドを使用して、最初の該当箇所を新しいテキストに置換します。
  • Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。
  • Python
from spire.doc import Document

# Document オブジェクトを作成します
document = Document()

# Word 文書を読み込みます
document.LoadFromFile("Sample.docx")

# 置換モードを最初の一致のみ置換するように設定します
document.ReplaceFirst = True

# 指定したテキストの最初の出現箇所を別のテキストに置換します
document.Replace("ビタミン", "Vitamin ", False, True)

# 置換後の文書を保存します
document.SaveToFile("output/最初の一致の検索と置換.docx")
document.Close()

Word 文書内のテキスト検索と最初の置換

正規表現による Word 文書内のテキストの検索と置換

Document.Replace() メソッドに Regex オブジェクトと新しいテキストを渡すことで、正規表現に一致するテキストを置換できます。詳細な手順は以下のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Regex オブジェクトを作成し、特定のテキストに一致するパターンを定義します。
  • Document.Replace() メソッドを使用して、正規表現に一致するテキストを新しいテキストに置換します。
  • Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。
  • Python
from spire.doc import Document, Regex

# Document オブジェクトを作成します
document = Document()

# Word 文書を読み込みます
document.LoadFromFile("Sample1.docx")

# 先頭が # のテキストに一致する正規表現を作成します
regex = Regex(r"ORD-\d{8}")

# 正規表現に一致するテキストを検索し、別のテキストに置換します
document.Replace(regex, "ORD-[注文ID]")

# 文書を保存します
document.SaveToFile("output/正規表現での検索と置換.docx")
document.Close()

正規表現による Word 文書内のテキストの検索と置換

Word 文書内のテキストの検索と画像への置換

Spire.Doc for Python には、テキストを直接画像に置換するメソッドはありませんが、テキストの位置に画像を挿入し、その後テキストを削除することで実現できます。詳細な手順は以下のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書を読み込みます。
  • Document.FindAllString() メソッドを使用して、文書内の特定のテキストを検索します。
  • 検索結果をループ処理します。
  • DocPicture オブジェクトを作成し、DocPicture.LoadImage() メソッドを使用して画像を読み込みます。
  • 検索したテキストを TextRange オブジェクトとして取得し、その段落内でのインデックスを取得します。
  • 画像をテキストの位置に挿入し、その後 TextRange を削除します。
  • Document.SaveToFile() メソッドを使用して、変更後の文書を保存します。
  • Python
from spire.doc import Document, DocPicture

# Document オブジェクトを作成します
document = Document()

# Word 文書を読み込みます
document.LoadFromFile("Sample2.docx")

# 文書内の指定したテキストを検索します
selections = document.FindAllString("image_laptop", True, True)
index = 0
testRange = None

# 検索結果をループ処理します
for selection in selections:
    # 画像を読み込みます
    pic = DocPicture(document)
    pic.LoadImage("Laptop.jpg")

    # 検索されたテキストを単一のテキスト範囲として取得します
    testRange = selection.GetAsOneRange()

    # テキスト範囲が属する段落内のインデックスを取得します
    index = testRange.OwnerParagraph.ChildObjects.IndexOf(testRange)

    # 指定したインデックスに画像を挿入します
    testRange.OwnerParagraph.ChildObjects.Insert(index, pic)

    # テキスト範囲を削除します
    testRange.OwnerParagraph.ChildObjects.Remove(testRange)

# 変更後の文書を保存します
document.SaveToFile("output/テキストを検索して画像に置き換える.docx")
document.Close()

Word 文書内のテキストの検索と画像への置換

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in テキスト
Tagged under

Word 文書からテキストを抽出すると、文書内の記述情報を簡単に取得できます。これにより、テキストの操作、分析、整理が容易になり、テキストマイニング、感情分析、自然言語処理などの作業を実行できます。一方、画像を抽出すると、Word 文書に埋め込まれた視覚要素にアクセスでき、画像認識、コンテンツ抽出、画像データベースの作成などの作業に役立ちます。本記事では、Spire.Doc for Python を使用して、Python で Word 文書からテキストと画像を抽出する方法を紹介します。

Spire.Doc for Python のインストール

この操作には、Spire.Doc for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.Doc for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。

pip install Spire.Doc

Python で Word 文書の特定の段落のテキストを抽出する

セクション内の特定の段落を取得するには、Section.Paragraphs[index] プロパティを使用します。その後、Paragraph.Text プロパティを使用して、段落のテキストを取得できます。詳細な手順は以下のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
  • Document.Sections[index] プロパティを使用して特定のセクションを取得します。
  • Section.Paragraphs[index] プロパティを使用して特定の段落を取得します。
  • Paragraph.Text プロパティを使用して段落のテキストを取得します。
  • Python
from spire.doc import Document

# Document オブジェクトを作成します
doc = Document()

# Word 文書を読み込みます
doc.LoadFromFile("Sample.docx")

# 指定したセクションを取得します
section = doc.Sections.get_Item(0)

# 指定した段落を取得します
paragraph = section.Paragraphs.get_Item(1)

# 段落のテキストを取得します
str = paragraph.Text

# 結果を出力します
print(str)

Pythonを使ったWordの段落からのテキスト抽出

Python で Word 文書全体のテキストを抽出する

文書全体のテキストを取得する場合は、Document.GetText() メソッドを使用することで簡単に取得できます。手順は以下のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
  • Document.GetText() メソッドを使用して文書のテキストを取得します。
  • Python
from spire.doc import Document

# Document オブジェクトを作成します
doc = Document()

# Word ファイルを読み込みます
doc.LoadFromFile("Sample.docx")

# 文書全体のテキストを取得します
docText = doc.GetText()

# 結果を出力します
print(docText)

Pythonを使ったWord文書全体からのテキスト抽出

Python で Word 文書全体の画像を抽出する

Spire.Doc for Python には、Word 文書から画像を直接取得するメソッドはありません。そのため、文書内の子オブジェクトを走査し、それぞれのオブジェクトが DocPicture であるかを判定する必要があります。DocPicture である場合、DocPicture.ImageBytes プロパティを使用して画像データを取得し、一般的な画像フォーマットで保存できます。主な手順は以下のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
  • 文書内の子オブジェクトを順番に走査します。
  • 子オブジェクトが DocPicture であるかを判定し、該当する場合は DocPicture.ImageBytes プロパティを使用して画像データを取得します。
  • 画像データを PNG ファイルとして保存します。
  • Python
import queue
from spire.doc import Document, DocumentObjectType, DocPicture, ICompositeObject

# Document オブジェクトを作成します
doc = Document()

# Word ファイルを読み込みます
doc.LoadFromFile("Sample.docx")

# Queue オブジェクトを作成します
nodes = queue.Queue()
nodes.put(doc)

# リストを作成します
images = []

while nodes.qsize() > 0:
    node = nodes.get()

    # 文書内の子オブジェクトをループ処理します
    for i in range(node.ChildObjects.Count):
        child = node.ChildObjects.get_Item(i)

        # 子オブジェクトが画像かどうかを判定します
        if child.DocumentObjectType == DocumentObjectType.Picture:
            picture = child if isinstance(child, DocPicture) else None
            dataBytes = picture.ImageBytes

            # 画像データをリストに追加します
            images.append(dataBytes)

        elif isinstance(child, ICompositeObject):
            nodes.put(child if isinstance(child, ICompositeObject) else None)

# リスト内の画像をループ処理します
for i, item in enumerate(images):
    fileName = "Image-{}.png".format(i)
    with open("output/抽出した画像/" + fileName, 'wb') as imageFile:
        # 指定したパスに画像を書き込みます
        imageFile.write(item)
doc.Close()

Pythonを使ったWord文書全体からの画像抽出

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Published in テキスト
Tagged under