PowerPoint資料の画像読込+OpenAI入力
はい、Open XML SDKを使用してPowerPointのスライドをプログラムで画像として扱うことが可能です。以下の手順で実現できます:
-
スライドを画像としてエクスポート:
- Open XML SDKを使用してスライドの内容を取得し、System.DrawingやSkiaSharpなどのライブラリを使って画像としてレンダリングします¹(https://learn.microsoft.com/ja-jp/office/open-xml/presentation/working-with-presentation-slides)。
-
スライドの内容を取得:
-
SlidePart
クラスを使用してスライドの内容を取得します。以下はC#のコード例です²(https://www.ayumax.net/entry/2018/09/04/021745/):
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を使用して画像を生成 } }
-
-
画像として保存:
- 取得したスライドの内容を画像として保存します。例えば、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#での例です:
-
必要なパッケージをインストール:
DocumentFormat.OpenXml
-
System.Drawing.Common
(またはSkiaSharp
)
-
スライドを画像としてエクスポートするコード:
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.Jpeg
やImageFormat.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)
良い点:
- 可逆圧縮: 圧縮しても画質が劣化しません¹(https://yuryoweb.com/image-format/)。
- 透過サポート: 背景を透明にできるため、ロゴやアイコンに適しています¹(https://yuryoweb.com/image-format/)。
- 高画質: フルカラー(1,677万色)をサポートし、詳細な画像を保持できます¹(https://yuryoweb.com/image-format/)。
悪い点:
- ファイルサイズが大きい: 特に色数の多い画像では、JPEGよりもファイルサイズが大きくなります¹(https://yuryoweb.com/image-format/)。
JPEG (Joint Photographic Experts Group)
良い点:
- 高圧縮率: 非可逆圧縮により、ファイルサイズを大幅に小さくできます²(https://breezegroup.co.jp/202005/image-format/)。
- 高画質: フルカラー(1,677万色)をサポートし、写真やグラデーションのある画像に適しています²(https://breezegroup.co.jp/202005/image-format/)。
悪い点:
- 画質劣化: 圧縮するたびに画質が劣化します²(https://breezegroup.co.jp/202005/image-format/)。
- 透過サポートなし: 背景を透明にすることができません²(https://breezegroup.co.jp/202005/image-format/)。
GIF (Graphics Interchange Format)
良い点:
- アニメーションサポート: 簡単なアニメーションを作成できます³(https://hsmt-web.com/blog/html-images/)。
- 透過サポート: 背景を透明にすることができます³(https://hsmt-web.com/blog/html-images/)。
- 小さいファイルサイズ: 色数が少ないため、ファイルサイズが非常に小さくなります³(https://hsmt-web.com/blog/html-images/)。
悪い点:
- 色数制限: 最大256色しかサポートしていないため、写真やグラデーションには不向きです³(https://hsmt-web.com/blog/html-images/)。
WEBP
良い点:
- 高圧縮率: JPEGと比べて25-34%小さいファイルサイズで同等の画質を提供します⁴(https://www.asobou.co.jp/blog/web/image-files)。
- 可逆圧縮と非可逆圧縮: 両方の圧縮方法をサポートします⁴(https://www.asobou.co.jp/blog/web/image-files)。
- 透過とアニメーションサポート: PNGやGIFの機能を兼ね備えています⁴(https://www.asobou.co.jp/blog/web/image-files)。
悪い点:
- 互換性: 古いブラウザや一部のアプリケーションではサポートされていないことがあります⁴(https://www.asobou.co.jp/blog/web/image-files)。
これらの特徴を考慮して、用途に応じて最適な画像形式を選ぶことが重要です。具体的な用途やシナリオに応じたアドバイスが必要であれば教えてください!
¹(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)
理由:
- 高画質: 可逆圧縮により、画質が劣化しません¹(https://zenn.dev/acntechjp/articles/92178ecfe44a82)。
- 透過サポート: 背景を透明にできるため、図表やロゴの読み取りに適しています¹(https://zenn.dev/acntechjp/articles/92178ecfe44a82)。
- 詳細な情報保持: フルカラーをサポートし、細かい文字や図表のディテールを正確に保持できます¹(https://zenn.dev/acntechjp/articles/92178ecfe44a82)。
JPEG (Joint Photographic Experts Group)
理由:
- 高圧縮率: 非可逆圧縮により、ファイルサイズを小さくできます²(https://prompt.quel.jp/10299)。
- 広範なサポート: ほとんどのデバイスやアプリケーションでサポートされています²(https://prompt.quel.jp/10299)。
- 高画質: 写真や複雑な画像に適しており、文字や図表も比較的正確に読み取れます²(https://prompt.quel.jp/10299)。
WEBP
理由:
- 高圧縮率: JPEGよりも小さいファイルサイズで同等の画質を提供します³(https://af-e.net/python-gpt4o/)。
- 可逆圧縮と非可逆圧縮: 両方の圧縮方法をサポートし、用途に応じて選択できます³(https://af-e.net/python-gpt4o/)。
- 透過とアニメーションサポート: PNGやGIFの機能を兼ね備えています³(https://af-e.net/python-gpt4o/)。
GIF (Graphics Interchange Format)
理由:
- アニメーションサポート: 簡単なアニメーションを作成できます⁴(https://www.tresallir.jp/post/新時代のai、gpt-4oの特徴を徹底解説!)。
- 透過サポート: 背景を透明にすることができます⁴(https://www.tresallir.jp/post/新時代のai、gpt-4oの特徴を徹底解説!)。
- 小さいファイルサイズ: 色数が少ないため、ファイルサイズが非常に小さくなります⁴(https://www.tresallir.jp/post/新時代のai、gpt-4oの特徴を徹底解説!)。
これらの形式の中でも、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.