この動画は、ChatGPTをはじめとした生成AIツールの活用について学ぶ全10回のe-Learningです。前半は、記事、動画、企画書、Webページなどを様々な生成AIツールを利用して生成する方法を学ぶ内容です。後半は、GPT APIなどを利用してクローラー、AI-OCR、アプリケーション開発などを行う流れを紹介しており、難易度がグッと上がります。(後半は、プログラミングの知識が必要なため、事前にMicrosoft365、Google系ツールのコースを受講しておくことをオススメします。

各コンテンツは、20分程度の学習パートと事後課題で構成されています。

メンタルヘルスに課題を抱えて、離職、休職中の方の就労、復職をサポートするためのリワークプログラムの一環として作成していますが、実務に直結する内容かつかなり本格的な活用方法まで網羅していますので、純粋なリスキリングにもご活用いただけます。

動画コンテンツ

教材スライド

gpt_api_crawler_ocr_tutorial_20250816034200

PDFのダウンロードはこちら

Python+GPT APIによるクローラー実装例 サンプルコード

import requests
from bs4 import BeautifulSoup
import csv
from openai import OpenAI

# 1. RequestsでHTML取得
url = "https://example.com/news"
response = requests.get(url)
html = response.text

# 2. BeautifulSoupで要素抽出
soup = BeautifulSoup(html, 'html.parser')
articles = soup.select('.article')
extracted_text = []

for article in articles:
    title = article.select_one('.title').text
    content = article.select_one('.content').text
    extracted_text.append(f"タイトル: {title}\n内容: {content}")

# 3. GPT APIで整形
client = OpenAI(api_key="YOUR_API_KEY")
prompt = f"""
次のニュース記事を分析し、以下の形式でまとめてください:
- タイトル
- カテゴリ(技術/経済/社会/その他)
- 要約(30文字以内)

記事:
{extracted_text}
"""

response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": prompt}]
)
gpt_output = response.choices[0].message.content

# 4. 結果をCSV保存
with open('news_summary.csv', 'w', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['タイトル', 'カテゴリ', '要約'])
    
    lines = gpt_output.strip().split('\n')
    for i in range(0, len(lines), 3):
        if i+2 < len(lines):
            title = lines[i].replace('- タイトル: ', '')
            category = lines[i+1].replace('- カテゴリ: ', '')
            summary = lines[i+2].replace('- 要約: ', '')
            writer.writerow([title, category, summary])

Google Drive PDF → GPT API → スプレッドシート連携 サンプルコード

import os
import io
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
from google.oauth2 import service_account
import PyPDF2
from openai import OpenAI
import gspread
import json

# 1. Google Driveからファイルを取得する関数
def download_pdf_from_drive(file_id, credentials_path):
    # APIスコープ設定
    SCOPES = ['https://www.googleapis.com/auth/drive.readonly']
    
    # 認証情報の取得
    creds = service_account.Credentials.from_service_account_file(
        credentials_path, scopes=SCOPES)
    
    # Drive APIクライアント構築
    service = build('drive', 'v3', credentials=creds)
    
    # ファイルをメモリにダウンロード
    request = service.files().get_media(fileId=file_id)
    file = io.BytesIO()
    downloader = MediaIoBaseDownload(file, request)
    
    done = False
    while not done:
        status, done = downloader.next_chunk()
    
    file.seek(0)
    return file

# 2. PDFからテキストを抽出する関数
def extract_text_from_pdf(pdf_file):
    reader = PyPDF2.PdfReader(pdf_file)
    text = ""
    for page in reader.pages:
        text += page.extract_text() + "\n"
    return text

# 3. GPT APIでテキストを処理する関数
def process_with_gpt(text, api_key):
    client = OpenAI(api_key=api_key)
    
    # プロンプトを設定
    prompt = f"""
    以下の請求書PDFから抽出されたテキストを分析し、次の情報を抽出してください:
    - 請求書番号
    - 請求日
    - 取引先名
    - 商品/サービス(複数の場合はリスト化)
    - 各商品の単価
    - 各商品の数量
    - 各商品の金額
    - 合計金額(税込)
    
    CSV形式で返してください。ヘッダー行を含め、各商品は別々の行にしてください。
    
    テキスト:
    {text}
    """
    
    # GPT APIに送信
    response = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    
    return response.choices[0].message.content

# 4. Google Sheetsに出力する関数
def write_to_sheets(data, spreadsheet_id, worksheet_name, credentials_path):
    # APIスコープ設定
    SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
    
    # 認証情報の取得
    creds = service_account.Credentials.from_service_account_file(
        credentials_path, scopes=SCOPES)
    
    # Google Sheets APIクライアント構築
    client = gspread.authorize(creds)
    
    # スプレッドシートを開く
    spreadsheet = client.open_by_key(spreadsheet_id)
    
    # ワークシートを取得(存在しない場合は作成)
    try:
        worksheet = spreadsheet.worksheet(worksheet_name)
    except:
        worksheet = spreadsheet.add_worksheet(title=worksheet_name, rows="100", cols="20")
    
    # CSV形式のデータを行に分割
    lines = data.strip().split('\n')
    all_rows = []
    for line in lines:
        all_rows.append(line.split(','))
    
    # ワークシートにデータを書き込む
    worksheet.clear()
    worksheet.update('A1', all_rows)
    
    # ヘッダー行の書式設定(太字)
    worksheet.format('A1:Z1', {'textFormat': {'bold': True}})
    
    return spreadsheet.url

# メイン処理
def main():
    # 各種設定
    drive_file_id = 'YOUR_DRIVE_PDF_FILE_ID'
    spreadsheet_id = 'YOUR_SPREADSHEET_ID'
    worksheet_name = '請求書データ'
    credentials_path = 'service_account.json'
    openai_api_key = 'YOUR_OPENAI_API_KEY'
    
    # 1. Google DriveからPDFを取得
    pdf_file = download_pdf_from_drive(drive_file_id, credentials_path)
    
    # 2. PDFからテキスト抽出
    pdf_text = extract_text_from_pdf(pdf_file)
    
    # 3. GPT APIで処理
    structured_data = process_with_gpt(pdf_text, openai_api_key)
    
    # 4. Google Sheetsに出力
    sheet_url = write_to_sheets(structured_data, spreadsheet_id, worksheet_name, credentials_path)
    
    print(f"処理が完了しました。スプレッドシートURL: {sheet_url}")

if __name__ == "__main__":
    main()