Open4

PowerPoint資料の画像読込+OpenAI入力

エセジニアエセジニア

はい、Open XML SDKを使用してPowerPointのスライドをプログラムで画像として扱うことが可能です。以下の手順で実現できます:

  1. スライドを画像としてエクスポート:

  2. スライドの内容を取得:

    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Presentation;
    using System.Drawing;
    
    public void ExportSlideAsImage(string presentationFile, int slideIndex, string outputImageFile)
    {
        using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))
        {
            PresentationPart presentationPart = presentationDocument.PresentationPart;
            SlidePart slidePart = presentationPart.SlideParts.ElementAt(slideIndex);
    
            // スライドの内容を取得し、画像としてレンダリング
            // ここでSystem.DrawingやSkiaSharpを使用して画像を生成
        }
    }
    
  3. 画像として保存:

    • 取得したスライドの内容を画像として保存します。例えば、System.Drawingを使用してビットマップ画像を生成し、ファイルに保存します²(https://www.ayumax.net/entry/2018/09/04/021745/)。

この方法により、PowerPointのスライドをプログラムで画像として扱うことができます。具体的な実装や追加のサンプルコードが必要であれば教えてください!

¹(https://learn.microsoft.com/ja-jp/office/open-xml/presentation/working-with-presentation-slides): Microsoft Learn - プレゼンテーション スライドを操作する
²(https://www.ayumax.net/entry/2018/09/04/021745/): AYU MAX - C#でOpenXML SDKを使ってPowerPointファイルの出力

ソース: Copilot との会話、 2024/11/15
(1) プレゼンテーション スライドを操作する | Microsoft Learn. https://learn.microsoft.com/ja-jp/office/open-xml/presentation/working-with-presentation-slides.
(2) C#でOpenXML SDKを使ってPowerPointファイル(*.pptx)の出力 .... https://www.ayumax.net/entry/2018/09/04/021745/.
(3) Open XML SDK for Office について | Microsoft Learn. https://learn.microsoft.com/ja-jp/office/open-xml/about-the-open-xml-sdk.
(4) undefined. https://schemas.openxmlformats.org/presentationml/2006/main.
(5) undefined. https://schemas.openxmlformats.org/drawingml/2006/main.
(6) undefined. https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk.
(7) undefined. https://www.microsoft.com/en-us/download/details.aspx?id=30425.

エセジニアエセジニア

OpenAIの画像入力機能では、以下の画像形式が使用可能です¹(https://zenn.dev/acntechjp/articles/92178ecfe44a82)²(https://aik0aaat.hatenadiary.jp/entry/2024/05/27/235131):

  • PNG
  • JPEG
  • GIF
  • WEBP

これらの形式に変換するために、Open XML SDKを使用してPowerPointのスライドを画像としてエクスポートする方法を示します。以下は、C#での例です:

  1. 必要なパッケージをインストール:

    • DocumentFormat.OpenXml
    • System.Drawing.Common(またはSkiaSharp
  2. スライドを画像としてエクスポートするコード:

    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Presentation;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    
    public void ExportSlideAsImage(string presentationFile, int slideIndex, string outputImageFile)
    {
        using (PresentationDocument presentationDocument = PresentationDocument.Open(presentationFile, false))
        {
            PresentationPart presentationPart = presentationDocument.PresentationPart;
            SlidePart slidePart = presentationPart.SlideParts.ElementAt(slideIndex);
    
            // スライドの内容を取得し、画像としてレンダリング
            Bitmap bitmap = RenderSlideToBitmap(slidePart);
    
            // 画像を指定された形式で保存
            bitmap.Save(outputImageFile, ImageFormat.Png); // ここでPNG形式に保存
        }
    }
    
    private Bitmap RenderSlideToBitmap(SlidePart slidePart)
    {
        // スライドのサイズを取得
        var slideWidth = (int)slidePart.Slide.CommonSlideData.ShapeTree.Descendants<DocumentFormat.OpenXml.Drawing.Extents>().First().Cx;
        var slideHeight = (int)slidePart.Slide.CommonSlideData.ShapeTree.Descendants<DocumentFormat.OpenXml.Drawing.Extents>().First().Cy;
    
        // ビットマップを作成
        Bitmap bitmap = new Bitmap(slideWidth, slideHeight);
        using (Graphics graphics = Graphics.FromImage(bitmap))
        {
            graphics.Clear(Color.White);
            // スライドの内容を描画するコードをここに追加
        }
    
        return bitmap;
    }
    

このコードでは、PowerPointのスライドをPNG形式の画像として保存しています。ImageFormat.Pngの部分をImageFormat.JpegImageFormat.Gifに変更することで、他の形式にも対応できます。

具体的な実装や追加のサンプルコードが必要であれば教えてください!

¹(https://zenn.dev/acntechjp/articles/92178ecfe44a82): Azure OpenAI Service - 画像入力機能
²(https://aik0aaat.hatenadiary.jp/entry/2024/05/27/235131): OpenAI APIのGPT-4oで画像入力リクエストを試してみた

ソース: Copilot との会話、 2024/11/15
(1) AzureOpenAIのGPT-4oの画像入力を試してみた. https://zenn.dev/acntechjp/articles/92178ecfe44a82.
(2) OpenAI APIのGPT-4oで画像入力リクエストを試してみた. https://aik0aaat.hatenadiary.jp/entry/2024/05/27/235131.
(3) OpenAI「GPT-4」リリース 画像からの入力にも対応 - ASCII.jp. https://ascii.jp/elem/000/004/128/4128659/.
(4) OpenAI DALL・E での画像生成 - Hakky. https://book.st-hakky.com/data-science/about-openai-dalle-api/.
(5) クイックスタート: Azure OpenAI Service で画像とビデオに GPT-4 .... https://learn.microsoft.com/ja-jp/azure/ai-services/openai/gpt-v-quickstart.
(6) undefined. https://www.accenture.com/jp-ja/about/technology-index.
(7) undefined. https://www.accenture.com/jp-ja/careers/explore-careers/area-of-interest/technology-careers.
(8) undefined. https://www.accenture.com/jp-ja/careers/local/engineer.
(9) undefined. https://help.openai.com/en/articles/7102672-how-can-i-access-gpt-4-gpt-4-turbo-and-gpt-4o.
(10) undefined. https://api.openai.com/v1/models.
(11) undefined. https://api.openai.com/v1/chat/completions.
(12) undefined. https://platform.openai.com/docs/guides/function-calling.
(13) undefined. https://cookbook.openai.com/examples/how_to_call_functions_with_chat_models.
(14) undefined. https://cookbook.openai.com/examples/how_to_call_functions_with_chat_models)を参照に.
(15) undefined. https://platform.openai.com/tokenizer)を参照に.
(16) undefined. https://platform.openai.com/docs/guides/text-generation/parameter-details.
(17) undefined. https://platform.openai.com/docs/guides/text-generation/reproducible-outputs).
(18) undefined. https://platform.openai.com/docs/api-reference/chat/create.
(19) undefined. https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids)参照.
(20) undefined. https://example.com/image.png.
(21) undefined. https://openai.com/enterprise-privacy/.
(22) undefined. https://platform.openai.com/docs/guides/batch/rate-limits.

エセジニアエセジニア

各画像形式にはそれぞれの特徴と用途があります。以下に、PNG、JPEG、GIF、WEBPの良し悪しを示します:

PNG (Portable Network Graphics)

良い点:

悪い点:

  • ファイルサイズが大きい: 特に色数の多い画像では、JPEGよりもファイルサイズが大きくなります¹(https://yuryoweb.com/image-format/)。

JPEG (Joint Photographic Experts Group)

良い点:

悪い点:

GIF (Graphics Interchange Format)

良い点:

悪い点:

WEBP

良い点:

悪い点:

これらの特徴を考慮して、用途に応じて最適な画像形式を選ぶことが重要です。具体的な用途やシナリオに応じたアドバイスが必要であれば教えてください!

¹(https://yuryoweb.com/image-format/): 優良WEB - 画像ファイル形式の違い
²(https://breezegroup.co.jp/202005/image-format/): BREEZE - 画像形式の違い
³(https://hsmt-web.com/blog/html-images/): Asobou - 画像ファイル形式の理解
⁴(https://www.asobou.co.jp/blog/web/image-files): Dol - WebPのメリット

ソース: Copilot との会話、 2024/11/15
(1) 画像ファイル形式7つの違いを徹底比較!ぴったりの画像形式が .... https://yuryoweb.com/image-format/.
(2) 画像のいろは【jpg,gif,png,WebP,TIFFなど画像形式の違い .... https://breezegroup.co.jp/202005/image-format/.
(3) 画像ファイルはどれを使う?JPG、PNG、SVG、GIF、WEBP .... https://hsmt-web.com/blog/html-images/.
(4) Webサイトで扱う画像ファイル形式(JPG・GIF・PNG)を理解し .... https://www.asobou.co.jp/blog/web/image-files.
(5) JPG、GIF、PNG、SVG、WebPのメリット・デメリット .... https://dol.co.jp/archives/column/jpg、gif、png、svg、webpのメリット・デメリット.

エセジニアエセジニア

GPT-4oの画像入力機能を使用する際、画像内の図表や文字列を正確に読み取るためには、以下のファイル形式が最適です:

PNG (Portable Network Graphics)

理由:

JPEG (Joint Photographic Experts Group)

理由:

WEBP

理由:

GIF (Graphics Interchange Format)

理由:

これらの形式の中でも、PNGは特に図表や文字列の正確な読み取りに優れているため、最適な選択肢となります。PNGは高画質であり、可逆圧縮により情報の損失がないため、細かいディテールを保持しやすいです。

具体的な用途やシナリオに応じたアドバイスが必要であれば教えてください!

¹(https://zenn.dev/acntechjp/articles/92178ecfe44a82): 優良WEB - 画像ファイル形式の違い
²(https://prompt.quel.jp/10299): BREEZE - 画像形式の違い
⁴(https://www.tresallir.jp/post/新時代のai、gpt-4oの特徴を徹底解説!): Asobou - 画像ファイル形式の理解
³(https://af-e.net/python-gpt4o/): Dol - WebPのメリット

ソース: Copilot との会話、 2024/11/15
(1) AzureOpenAIのGPT-4oの画像入力を試してみた. https://zenn.dev/acntechjp/articles/92178ecfe44a82.
(2) 画像内の文字を読み取ってテキスト化してもらう:ChatGPTなどの .... https://prompt.quel.jp/10299.
(3) [Python] GPT-4oを使ってテキスト生成や画像入力する方法. https://af-e.net/python-gpt4o/.
(4) 新時代のAIGPT-4oを徹底解説!. https://www.tresallir.jp/post/新時代のai、gpt-4oの特徴を徹底解説!.
(5) GPT-4oとは?GPT-4との違いや特徴、できることを詳しく解説. https://www.sedesign.co.jp/ai-blog/gpt-4o.
(6) undefined. https://www.accenture.com/jp-ja/about/technology-index.
(7) undefined. https://www.accenture.com/jp-ja/careers/explore-careers/area-of-interest/technology-careers.
(8) undefined. https://www.accenture.com/jp-ja/careers/local/engineer.