セキュリティと効率を両立：ChatGPT on Azure OpenAI Serviceを活用したWordとPDFレポート要約

<span>ビジネスマンは日々多くの書類やレポートを読み、情報を吸収（インプット）しなければなりませんが、その作業は時間と労力がかかります。この記事では、具体的な業務状況を踏まえつつ、セキュリティに配慮したAzure OpenAI ServiceとGPT-3.5-turbo/GPT-4を活用したレポート要約プログラムを紹介します。このプログラムは、WordとPDF形式のレポートを効率的に要約し、重要なキーワードを抽出することで、短時間で情報を把握し、迅速な意思決定が可能となります。プログラムの実装方法も解説し、AI技術を活用した業務効率化とセキュリティの両立を実現しましょう。</span>
<h2>はじめに</h2>
<span>ビジネスマンは、日々様々なドキュメントを読み、情報をインプットしなければならない状況にあります。これらのドキュメントには、ビジネス書、技術書、仕様書、提案書などが含まれており、それぞれが専門的な知識や情報を提供しています。しかし、これらの文書の量は膨大であり、すべてを把握することは困難です。その結果、重要な情報が見逃されることがあり、意思決定や業務の効率に影響を与えることがあります。</span>

<span>AI技術を活用することで、膨大なドキュメントを簡単に要約し、効率的に情報を把握することができます。しかし、社内の機密情報が含まれるドキュメントを外部のAIサービスにアップロードすることにはセキュリティ上の懸念があります。そこで、この記事では、Azure OpenAI Serviceを活用することで、セキュリティを確保しながら、業務効率化を実現する方法を紹介します。具体的には、GPT-3.5-turbo/GPT-4とAzure OpenAI Serviceを活用したドキュメント要約プログラムを用いて、膨大なドキュメントを効率的に処理する方法を示します。</span>

<span>Azure OpenAI Serviceは、Microsoft Azure上で提供されるAIサービスであり、GPT-3.5-turbo/GPT-4を利用できるだけでなく、以下のようなセキュリティ面の利点があります。</span>
<ol>
 	<li><strong>データの保護:</strong> Azure OpenAI Serviceは、データの暗号化とプライバシー保護に力を入れています。送信されたデータは、暗号化され、Azureのデータセンターに安全に保管されます。 <a href="https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/encrypt-data-at-rest" target="_blank" rel="noopener">[Azure OpenAI Service による保存データの暗号化]</a></li>
 	<li><strong>コンプライアンス:</strong> Azureは、主要な規制や認証に対応しており、企業が業界標準や法規制に適合することを容易にします。例えば、GDPR（一般データ保護規則）、HIPAA（健康情報保護法）などの規制に対応しています。 <a href="https://learn.microsoft.com/ja-JP/compliance/regulatory/offering-home" target="_blank" rel="noopener">[Microsoft コンプライアンスのサービス]</a></li>
 	<li><strong>アクセス制御:</strong> Azure Active Directoryを使用して、ユーザーやグループのアクセス権を管理できます。これにより、特定のユーザーだけがAzure OpenAI Serviceへのアクセスを許可され、情報の漏洩リスクを低減できます。<a href="https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/how-to/managed-identity" target="_blank" rel="noopener">[マネージド ID を使用して Azure OpenAI Service を構成する方法]</a></li>
 	<li><strong>監査とログ:</strong> Azureでは、すべての操作に関する監査ログが生成され、セキュリティチームがリアルタイムで監視することができます。これにより、異常なアクセスや不正な操作があった場合に、迅速に対処することができます。<a href="https://learn.microsoft.com/ja-jp/azure/cognitive-services/openai/how-to/monitoring" target="_blank" rel="noopener">[Azure OpenAI Service の監視]</a></li>
</ol>
<h2>レポート要約プログラムの概要</h2>
<h3>プログラムの目的と機能</h3>
このプログラムは、膨大な量のレポートを効率的に読み込むために、GPT-3.5-turboを使用してレポートの自動要約を生成します。主な目的は、マネージャーやビジネスパーソンが短時間で重要な情報を把握し、迅速な意思決定ができるようにすることです。プログラムは以下の機能を持っています。
<ul>
 	<li>ファイルの要約</li>
 	<li>Word（docx）とPDFファイルに対応</li>
 	<li>特定のキーワードを強調して抽出</li>
</ul>
「特定のキーワードを強調して抽出」については、プロンプト・チューニングを行うことで、様々な用途に使うことも出来ます。
<h3>キーワード抽出による情報の強調</h3>
プログラムは、各レポートの自動要約を生成する際に、特定のキーワード（売上高、利益、商品・サービスの売れ行き、市場動向、問題点、改善点、人事異動など）を強調して抽出します。これにより、例えばマネージャーは重要な情報を短時間で把握し、迅速な意思決定が可能となります。
<h2>実装編：<span>WordとPDFをファイルごとに要約</span></h2>
<h3>必要なライブラリや環境の準備</h3>
このプログラムの実装には、Pythonといくつかのライブラリが必要です。以下のライブラリをインストールしてください。
<ul>
 	<li>openai: OpenAI APIとのやり取りを行うためのライブラリ</li>
 	<li>python-docx: Wordファイルを読み込むためのライブラリ</li>
 	<li>PyPDF2、<span>PyMuPDF</span>: PDFファイルを読み込むためのライブラリ</li>
</ul>
ライブラリのインストールは、以下のコマンドを実行してください。
<div class="hcb_wrap">
<pre class="prism undefined-numbers lang-python" data-lang="Python"><code>pip install openai python-docx PyPDF2 PyMuPDF</code></pre>
</div>
<h3>スクリプト</h3>
以下のファイルを document_summery.py として保存してもらい、コマンドラインから
python3 document_summery.py [ファイル名]
を実行することでファイルの要約が出力されます。

```python
import openai
import sys
import os
from docx import Document
import PyPDF2
import fitz  # PyMuPDF

openai.api_type = "azure"
openai.api_version = "2022-12-01"

# Azure OpenAI ServiceのAPIキーを環境変数から設定
resource = os.environ["AZURE_OPENAI_RESOURCE"]
openai.api_base = f"https://{resource}.openai.azure.com/"
openai.api_key = os.environ["AZURE_OPENAI_API_KEY"]

def read_docx(file_path):
    doc = Document(file_path)
    full_text = []
    for para in doc.paragraphs:
        full_text.append(para.text)
    return "\n".join(full_text)

def read_pdf(file_path):
    pdf_document = fitz.open(file_path)
    full_text = ""
    for page_num in range(pdf_document.page_count):
        page = pdf_document.load_page(page_num)
        full_text += page.get_text("text")
    return full_text

def generate_summary(text):
    messages = [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": f"Summarize the following text with emphasis on keywords like revenue, profit, sales performance, market trends, issues, improvements, and personnel changes: \"{text}\""}
    ]

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages
    )
    
    return response.choices[0].message["content"]

def main(file_path):
    if file_path.endswith(".docx"):
        text = read_docx(file_path)
    elif file_path.endswith(".pdf"):
        text = read_pdf(file_path)
    else:
        raise ValueError("Unsupported file format. Please provide a .docx or .pdf file.")
    
    summary = generate_summary(text)
    print(summary)

if __name__ == "__main__":
    file_path = sys.argv[1]  # コマンドライン引数でファイルパスを指定
    main(file_path)
```

<h3>プロンプト・チューニング（カスタマイズ）</h3>
上記のスクリプトは32行目の「Summarize the following text with emphasis on keywords like revenue, profit, sales performance, market trends, issues, improvements, and personnel changes（以下のテキストを売上高、利益、販売実績、市場動向、問題点、改善点、人事変更などのキーワードに焦点を当てて要約してください。）」をベースに回答してくれます。

業種や目的によって、プロンプトを変更することで、さまざまな活用法が考えられます。例えば、
<ul>
 	<li><strong>旅行業界向けのプロンプト：</strong>
「以下のテキストを要約し、予約、キャンセル、顧客満足度、行き先、ツアーパッケージ、価格、旅行制限などのキーワードを重視してください。」</li>
 	<li><strong>医療業界向けのプロンプト：</strong>
「以下のテキストを要約し、患者の結果、医学研究、薬物開発、規制変更、医療費、人員不足などのキーワードを重視してください。」</li>
 	<li><strong>小売業界向けのプロンプト：</strong>
「以下のテキストを要約し、フットトラフィック、Eコマースの売上、在庫管理、マーケティングキャンペーン、顧客フィードバック、従業員の定着などのキーワードを重視してください。」</li>
</ul>
など、さまざまな業種や目的に合わせてプロンプトをカスタマイズすることができます。それによって、OpenAIをより効果的に活用することができます。重視するキーワードを自分の業種や自社に特化した内容に変更できます。

また、ようやく以外にもプロンプトを変えることで以下のようなことも可能です。
<ul>
 	<li><strong>資料の変換</strong>
文章を生成する機能を持っており、ビジネス文書からプレゼン資料への変換をすることが出来ます。</li>
 	<li><strong>FAQ自動応答</strong>
入力した文章の内容に対して自動応答することが出来ます。ファイル作成者の手間をかけることなく、疑問に答えることが出来ます。</li>
</ul>
これらの活用法を活用することで、OpenAIをより幅広く活用することができます。
<h2>まとめ</h2>
<span>ビジネスマンは多くの書類を読まなければならず、その作業は時間と労力がかかりますが、Azure OpenAI Serviceを使用して、GPT-3.5-turbo/GPT-4を活用したドキュメント要約プログラムを使うことで、セキュリティに気を配りつつ、短時間で情報を把握し、迅速な意思決定ができるようになります。Azure OpenAI Serviceは、データの保護、コンプライアンス、アクセス制御、監査とログなどのセキュリティ面で利点があります。プログラムの実装方法も解説されています。AI技術を活用した業務効率化とセキュリティの両立を実現しましょう。</span>