Graniteビジョン・モデルでPPT AI画像分析質問応答システムを構築

AI駆動型テクノロジーが進化するにつれて、画像分析はますます高度になり、ビジュアル・データからより深い洞察を得られるようになっています。機械学習モデルの進歩により、AIはアップロードされた画像を処理し、メタデータを抽出し、大規模なコンテンツ・モダナイゼーションをサポートします。これらの分析ツールは、料金体系、ビジュアル最適化、画像生成などのアプリケーションの予測モデリングにも貢献し、ワークフローのコスト効果と効率を高めます。データ駆動型のアプローチを統合することで、AIはオートメーションと意思決定を強化し、インテリジェントな視覚的解釈の新たな可能性を提供します。

ユースケース

コンピューター・ビジョンと高度なAIの急速な進歩に伴い、企業や研究者は幅広いアプリケーションにテクノロジーを活用しています。画像分類やOCR(光学式文字認識)からセグメンテーションや動画解析まで、AI搭載ツールは視覚情報の抽出と分析の方法を変革しています。

ソーシャル・メディアなどの業界では、AIがピクセル・レベルで画像を分析することでコンテンツのモダナイゼーションを強化し、コンプライアンスを確保し、エンゲージメントを向上させます。また、企業はVision APIを利用して自動文書処理を行い、スキャンされたファイル、Excel、レポートを構造化データに変換することもできます。これらのアプリケーションは、ワークフローを合理化し、効率を向上させ、組織が大規模なビジュアル・データセットから有意義な洞察を抽出できるようにします。

これらのユースケースは、AIを活用した画像分析の役割がさまざまな業界で高まっていることを浮き彫りにしています。このチュートリアルでは、これらの機能をPowerPointプレゼンテーションに適用することに焦点を当て、高度なコンピューター・ビジョンとAIモデルを使用してテキストと画像に関するインタラクティブなQ&Aを可能にします。

AI搭載のプレゼンテーションのためのインタラクティブなQ&A

大規模言語モデル(LLM)は、非構造化テキストの膨大なデータセットからインテリジェントな洞察を可能にすることで、機械学習に革命をもたらしました。しかし、従来のLLMは画像分析に苦労することが多く、プレゼンテーションのチャート、図表、視覚的要素から洞察を抽出することが困難です。

IBM Granite Vision 3.2大規模言語モデル(LLM)は、AIツールと高度なオブジェクト検知アルゴリズムを統合することで、マルチモーダル解析の自動化を可能にしています。このチュートリアルでは、AIを使用してPowerPoint(.pptx)ファイルからテキストと画像を抽出および分析し、インタラクティブなQ&Aを可能にしてプレゼンテーションの洞察を強化することで、ワークフローを効率化する方法を説明します。

このチュートリアルでは、テキストと画像の両方をコンテキストとして使用して、PowerPointスライドからユーザーのクエリーにリアルタイムで応答できるAI駆動型システムの構築方法を学習します。このチュートリアルでは、次の手順について説明します。

PowerPoint処理:AIベースの分析用に、テキストと画像を.pptxファイルから抽出します。

テキスト・ベースのQ&A:Granite Visionを使用して、抽出されたスライド・テキストに基づいて回答を生成します。

画像ベースのQ&A:AIにスライドの画像、チャート、図表の分析を依頼します。

最適化された質問の作成:正確で関連性の高いAI応答を作成するための効果的な質問の作成方法をご覧ください。

使用されるテクノロジー

このチュートリアルでは、次の最先端のAIテクノロジーを活用します。

1. IBM Granite Vision:テキストと画像の両方を処理する強力なビジョン言語モデル(VLM)。

2. Python-PPTX:PowerPointファイルからテキストと画像を抽出するためのライブラリー。

3. Transformers:AIモデルのインプットを効率的に処理するためのフレームワーク。

このチュートリアルで達成できる内容

このチュートリアルを完了することで、以下のことが可能になります。

1. PowerPointコンテンツ(テキストと画像)を抽出して処理する。

2. スライドコンテンツのAI駆動型Q&AにGranite 3.2モデルを使用する。

3. テキストと画像についてAIに賢明な質問をする。

4. AIを活用した説明を使用して、ユーザーのプレゼンテーションにおけるインタラクションを改善する。

このチュートリアルは、AI駆動型の洞察を使用してプレゼンテーションを強化したいAI開発者、研究者、コンテンツ作成者、およびビジネス・プロフェッショナル向けに設計されています。

動画

前提条件

watsonx.aiプロジェクトを作成するには、 IBM® Cloudのアカウントが必要です。

手順

ステップ1. 環境を設定する

いくつかあるツールの中から選択することもできますが、このチュートリアルでは、Jupyter Notebookを使用するためにIBMアカウントを設定する方法について説明します。

1. IBM Cloudアカウントを使用して、watsonx.aiにログインします。

2. watsonx.aiプロジェクトを作成します。プロジェクトIDはプロジェクト内から取得できます。[管理]タブをクリックし、[全般]ページの[詳細]セクションからプロジェクトIDをコピーします。このチュートリアルではこのIDが必要になります。

3. Jupyter Notebookを作成します。

4. PPTXファイルをwatsonx.aiにアセットとしてアップロードします

このステップでは、このチュートリアルのコードをコピーできるノートブック環境を開きます。あるいは、このノートブックをローカル・システムにダウンロードし、watsonx.aiプロジェクトにアセットとしてアップロードすることもできます。このチュートリアルは、GitHubでも公開されています。

注:このチュートリアルでは、コードを実行するためにGPUインフラストラクチャーが必要なため、このチュートリアルで説明しているように、watsonx.aiを使用することをお勧めします。

ステップ2: 必要な依存関係をインストールする

PowerPointコンテンツの抽出と処理を開始する前に、必要なPythonライブラリーをインストールする必要があります。

transformers:IBM Granite Visionとその他のAIモデルへのアクセスを提供。

torch:モデルを効率的に実行するために必要なディープラーニング(深層学習)フレームワーク。

python-pptx:PowerPoint(.pptx)ファイルからテキストと画像を抽出するためのライブラリー。

次のコマンドを実行して、これらのパッケージをインストールおよびアップグレードします。

!pip install --upgrade transformers
!pip install --upgrade torch
!pip install python-pptx
!pip install botocore
!pip install ibm-cos-sdk

ステップ3: 必要なライブラリーをインポートする

このステップでは、PowerPointファイルの処理、画像の処理、IBM Granite Visionモデルとの対話に必要なライブラリーをインポートします。

  1. osおよびio:ファイル処理およびインプット/アウトプットのオペレーションに使用されます。
  2. torch:AIモデルとの互換性を確保します。
  3. pptx.Presentation:PowerPoint(.pptx)ファイルからテキストと画像を抽出します。
  4. PIL.Image:スライドから抽出された画像を処理します。
  5. transformers:AIベースのQ&A用IBM Granite Visionを読み込みます。
  6. boxocore.client.Config & ibm_boto3:クラウド・ベースのストレージ・アクセス(IBM Cloud Object Storage)を処理します。
import os
import io
import torch
from pptx import Presentation
from PIL import Image
from io import BytesIO
from transformers import AutoProcessor, AutoModelForVision2Seq
from botocore.client import Config
import ibm_boto3

ステップ4:IBM Cloud Object Storageに接続する

このステップでは、IBM Cloud Object Storageへの接続を確立し、クラウドに保存されているPowerPointファイルにアクセスして取得します。

IBM Cloud Object Storageを最大限に活用するための機能を備えたboto3ライブラリーのフォークを通じて提供されるpythonサポートを活用できます。これらの認証情報を取得するには、公式ドキュメントを参照してください

ibm_boto3.client:IBM Cloud Object Storageと対話するクライアントを作成します。

ibm_api_key_id:認証用のIBM Cloud APIキー。

ibm_auth_endpoint:IBM Cloudの認証エンドポイント。

endpoint_url:特定のCloud Object Storage(COS)のストレージ・エンドポイント。

# IBM COS credentials
cos_client = ibm_boto3.client(
    service_name='s3',
    ibm_api_key_id='Enter your API Key',
    ibm_auth_endpoint='[Enter your auth end-point url]',
    config=Config(signature_version='oauth'),
    endpoint_url='[Enter your end-point url]'
)

注:watsonx.aiで資産としてファイルをアップロードすると、自動的にIBM Cloud Object Storageに保管されます。後でファイルをJupyter Notebookにインポートすると、watsonx.aiが必要な認証情報(APIキー、認証エンドポイント、ストレージ・エンドポイント)を生成し、ノートブックに挿入します。提供されるIBM Cloud Object Storageの認証情報を使用すると、セキュアにアクセスしてストレージからファイルを取得できるため、watsonx.ai資産とノートブック環境をシームレスに統合し、さらなる処理が可能になります。

この接続を設定することで、IBM Cloudに保存されているPowerPointプレゼンテーションをシームレスにインポートして処理し、AI搭載の分析を行うことができます。

ステップ5:ストレージ・パラメーターを定義する

このステップでは、IBM Cloud Object Storage バケットとファイルの詳細を指定し、処理するためのPowerPoint プレゼンテーション(.pptx)を見つけて取得します。

IBM Cloud UIからバケット設定の詳細を取得するには、この公式ドキュメントをチェックしてください。

bucket:ファイルが保管されているIBM Cloud Object Storageバケットの名前。

object_key:アクセスするPowerPointプレゼンテーションの正確なファイル名

bucket = 'Enter your bucket key'
object_key = 'Application Integration client presentation.PPTX [You can replace this with your PPT name]'

ステップ6:IBM Cloud Object StorageからPowerPointファイルを取得する

このステップでは、IBM Cloud Object StorageからPowerPoint(.pptx)ファイルをダウンロードし、ローカルで処理します。

cos_client.get_object(): 指定されたバケットとオブジェクト・キーからファイルを取得します。

streaming_body_read():ファイルの内容をバイト・ストリームに読み取り、さらに処理します。

# Download PPTX file from IBM COS
streaming_body = cos_client.get_object(Bucket=bucket, Key=object_key)['Body']
pptx_bytes = streaming_body.read()

ステップ7:PowerPointファイルをローカル・パスに保存する

このステップでは、ダウンロードされたPowerPointファイル(.pptx)をローカルに保管し、処理できるようにします。

pptx_path:プレゼンテーションが保存されるローカル・ファイル名を定義します。

open(pptx_path, 'wb'):ファイルを書き込みバイナリ・モードで開き、取得したバイトを保管します。

f.write(pptx_bytes):ダウンロードされたファイルの内容を新しく作成された.pptxファイルに書き込みます。

# Save the bytes to a local PPTX file
pptx_path = "downloaded_presentation.pptx"
with open(pptx_path, 'wb') as f:
    f.write(pptx_bytes)

ステップ8:ファイルの保存場所を確認する

このステップでは、PowerPointファイルが正常に保存されたことを確認するための確認メッセージを印刷します。「print」関数は、.pptxファイルがローカル保存されているファイル・パスを表示します。

print(f"PPTX file saved as: {pptx_path}")

ステップ9:PowerPointファイルからテキストと画像を抽出する

このステップでは、PowerPointファイル(.pptx)を処理してその内容を抽出する関数を定義します。

slide_texts:各スライドから抽出されたテキストを保管します。

slide_images:抽出された画像をPythonイメージング・ライブラリー(PIL)の画像オブジェクトとして保管し、対応するスライド番号とともに保管します。

スライドを反復処理して、テキスト・コンテンツとスライド内に埋め込まれた画像を含む図形からテキストを抽出します。

この関数では、PPTからテキストと画像を分離し、チャット・エージェントは抽出されたコンテンツに基づいてユーザーの質問に簡単に回答できるようになります。

def extract_text_and_images_from_pptx(pptx_path):
        presentation = Presentation(pptx_path)
        slide_texts = []
        slide_images = []
        for slide_number, slide in enumerate(presentation.slides):
                # Extract text from slide
                slide_text = []
                for shape in slide.shapes:
                        if hasattr(shape, "text"):
                                slide_text.append(shape.text)
                                slide_texts.append("\n".join(slide_text))
                # Extract images from slide
                for shape in slide.shapes:
                        if hasattr(shape, "image"):
                                image_stream = BytesIO(shape.image.blob)
                                image = Image.open(image_stream)
                                slide_images.append((slide_number, image))
return slide_texts, slide_images

ステップ10:PowerPointファイルを処理する

このステップでは、関数を呼び出して、保存したPowerPointファイルからテキストと画像を抽出します。

pptx_path:ダウンロードされたPowerPointファイルのローカル・パスを指定します。

Extract_text_and_images_from_pptx(pptx_path):スライドからテキストと画像を抽出します。

slide_texts:すべてのスライドから抽出されたテキストを保管します。

slide_images:抽出した画像を保管します。

pptx_path = "downloaded_presentation.pptx"
slide_texts, slide_images = extract_text_and_images_from_pptx(pptx_path)

ステップ11:スライドから抽出されたテキストを表示する

このステップでは、各スライドから抽出されたテキストを表示して、PowerPointコンテンツが正しく処理されたことを確認します。

enumerate(slide_texts):抽出されたテキストを反復処理し、各テキストをそれぞれのスライド番号に関連付けます。

セパレーター ('-' * 40):コンテンツをさまざまなスライドから視覚的に区別するのに役立ちます。

# Display extracted text and images
for i, text in enumerate(slide_texts):
        print(f"Slide {i + 1} Text:\n{text}\n{'-'*40}")

ステップ12:スライドから抽出された画像を表示する

このステップでは、PowerPointスライドから抽出された画像を確認し、視覚化します。

len:抽出された画像の総数。

img.show():抽出された各画像をレビューするために開きます。

「.show()」を「.save('filename.png')」に置き換えることで、画像をローカルに保管できます。

print(f"\nExtracted {len(slide_images)} images.")
for slide_num, img in slide_images:
        img.show() # This will open the image, or you can save it using img.save('filename.png')

ステップ13:IBM Graniteビジョン・モデルをロードする

このステップでは、AIによるテキストと画像処理のために、IBM Granite-Vision-3.2-2Bモデルを初期化します。

MODEL_NAMEは、使用する事前トレーニング済みのGranite Visionモデルを指定し、 torch.cuda.is_available()は、GPU(CUDA)がより高速な処理ができるかどうかを確認し、処理ができない場合は、デフォルトでCPUが使用されます。

# Load IBM Granite-Vision-3.1-2B-Preview model and processor
MODEL_NAME = "ibm/granite-vision-3-2-2b"
device = "cuda" if torch.cuda.is_available() else "cpu"

ステップ14:モデルとプロセッサーを初期化する

このステップでは、IBM Granite Visionモデルとそれに対応するプロセッサーをロードして、テキストと画像の両方の入力を処理します。

AutoProcessor.from_pretrained(MODEL_NAME, trust_remote_code=True):事前トレーニング済みプロセッサーをロードして、モデルのインプット(テキストと画像)をフォーマットします。

AutoModelForVision2Seq.from_pretrained(MODEL_NAME, trust_remote_code=True, ignore_mismatched_sizes=True).to(device):Granite Visionモデルをロードし、利用可能なデバイス(GPUまたはCPU)に転送します。

次の場合、

Trust_remote_code=True:カスタム・モデル実装との互換性を確保します。

ignore_mismatched_sizes=True:モデル・サイズに軽微な不一致がある場合にエラーを防止します。

注:読み込みに時間がかかる場合があります。

processor = AutoProcessor.from_pretrained(MODEL_NAME, trust_remote_code=True)
model = AutoModelForVision2Seq.from_pretrained(MODEL_NAME, trust_remote_code=True, ignore_mismatched_sizes=True).to(device)

ステップ15:テキストベースのAIチャットを導入する

このステップでは、ユーザーがPowerPointスライドから抽出したテキストに基づいて質問できるチャット機能を作成します。

要項

  1. ユーザーはスライドの内容に関連する質問をインプットします。
  2. PPTから抽出されたテキスト全体が、モデルの構造化された会話にフォーマットされます。これにより、モデルに正確なコンテキストが提供され、PPTコンテンツ自体から特定の回答を生成できます。
  3. app_chat_template()は、会話形式でAIモデルのインプットを準備します。
  4. model.generate() は、インプットされたクエリーに基づいて応答を生成します。
  5. Processor.decode()は、AIが生成した応答を人間が読み取れるテキストに解読します。
  6. ループはユーザーがチャットを終了するために「exit」と入力するまで続きます。
# Chat based on Text Only
def chat_with_text(model, processor, slide_texts):
    while True:
        query = input("Ask a question based on the presentation text (or type 'exit' to quit): ")
        if query.lower() == 'exit':
            break
        conversation = [
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": "\n".join(slide_texts) + f"\nQuery: {query}"},
                ],
            },
        ]
        inputs = processor.apply_chat_template(
            conversation,
        add_generation_prompt=True,
        tokenize=True,
        return_dict=True,
        return_tensors="pt"
        ).to(device)
        outputs = model.generate(**inputs, max_new_tokens=150)
        response = processor.decode(outputs[0], skip_special_tokens=True)
        print("Model Response:", response)

ステップ16:画像ベースのAIチャットを実装する

このステップでは、PowerPointスライドから抽出された個々の画像についてユーザーが質問できるチャット機能を作成します。

要項

  1. ユーザーがスライドの画像に関する質問をインプットします。
  2. 特定の画像を参照するスライド番号を指定します。
  3. 選択した画像は「slide_image_temp.png」として一時的に保存されます。
  4. 次の内容を含む、構造化された会話が作成されます。 (a) 画像ファイルのパス。(b) ユーザーの質問。
  5. apply_chat_template()は、インプットをAIモデルに適した形式で処理します。
  6. model.generate()は、画像とクエリーに基づいて応答を生成します。
  7. 応答はデコードされ、ユーザー向けに表示されます。
  8. ループは、ユーザーがexitを入力して終了するまで継続します。
# Chat based on Images Only
def chat_with_images(model, processor, slide_images):
    while True:
        query = input("Ask a question based on the presentation images (or type 'exit' to quit): ")
            if query.lower() == 'exit':
                break
            slide_num = int(input(f"Enter slide number (1 to {len(slide_images)}) to ask about its image: ")) - 1
            image = slide_images[slide_num][1]
            img_path = "slide_image_temp.png"
            image.save(img_path) # Save the image temporarily
            conversation = [
                {
                    "role": "user",
                    "content": [
                            {"type": "image", "url": img_path},
                            {"type": "text", "text": query},
                    ],
                },
            ]
            inputs = processor.apply_chat_template(
                conversation,
                add_generation_prompt=True,
                tokenize=True,
                return_dict=True,
                return_tensors="pt"
            ).to(device)
            outputs = model.generate(**inputs, max_new_tokens=150)
            response = processor.decode(outputs[0], skip_special_tokens=True)
            print("Model Response:", response)

ステップ17:テキストベースのAIチャットを実行する

このステップでは、chat_with_text関数を呼び出し、ユーザーがPowerPointスライドから抽出したテキストについて質問できるようにします。

要項

  1. chat_with_text()はテキスト・ベースのQ&Aセッションを開始します。
  2. この関数は継続的にユーザーに入力をプロンプトし、抽出されたスライド・テキストに基づいて質問に答えます。
  3. チャットのループは、ユーザーがexitを入力して終了するまで継続します。
chat_with_text(model, processor, slide_texts)

アウトプット

質問:統合は組織にとって競争上の優位性ですか?

<|assistant|>

はい、統合は組織にとって競争上の優位性をもたらします。これは、より迅速に行動し、課題を克服するのに役立ちますが、コストの増加、非効率性、セキュリティー・リスク、ユーザー・エクスペリエンスの低下につながる可能性があり、最終的には、急速に進化するビジネス・ランドスケープの中で成功する組織の競争力と能力を危険にさらす可能性があります。

プレゼンテーション・テキストに基づいて質問する(または「exit」と入力して終了する):exit

ユーザーが「統合は組織にとって競争上の優位性ですか?」と尋ねると、Granite Visionモデルは、抽出されたPowerPointスライド・テキストを使用してクエリを処理し、応答を生成しました。

このモデルは「統合」をビジネス・コンセプトとして認識し、そのメリットとリスクの両方を説明する「 スライド番号7」の構造化された回答を提供しました。統合によってスピードと問題解決能力が向上することを強調しましたが、効果的に管理しないと、コストの増加、非効率性、セキュリティー・リスク、ユーザー・エクスペリエンスの低下などの潜在的な欠点についても指摘しています。

この応答は、抽出されたスライド・テキストを解釈し、状況に応じてバランスの取れた回答を生成するモデルの能力を示しています

ステップ18:画像ベースのAIチャットを実行する

このステップでは、chat_with_images関数を呼び出し、ユーザーがPowerPointスライドから抽出した画像について質問できるようにします。

要項

  1. chat_with_images()は画像ベースのQ&Aセッションを開始します。
  2. この関数は、画像を含む特定のスライド番号を選択するようユーザーに促します。
  3. 選択された画像は処理され、ビジョン・モデルのための構造化された会話にフォーマットされます。
  4. モデルは、画像コンテンツとユーザーのクエリーに基づいて応答を生成します。
  5. ループは、ユーザーがexitを入力して終了するまで継続します。
chat_with_images(model, processor, slide_images)

アウトプット

プレゼンテーションの画像に基づいて質問します(または終了するには「exit」と入力):これは何の画像ですか?

スライド番号(1~41)を入力して、画像について質問します:2

モデルの応答:<|system|>

好奇心旺盛なユーザーと人工知能アシスタントとの間のチャット。アシスタントは、ユーザーの質問に対して、役に立ち、詳しく、丁寧な回答を提供します。

<|user|>

これは何の画像ですか?

<|assistant|>

3Dモデル

プレゼンテーションの画像に基づいて質問します(または終了するには「exit」と入力):この画像を説明してください

スライド番号(1~41)を入力して、画像について質問します:2

モデルの応答:<|system|>

好奇心旺盛なユーザーと人工知能アシスタントとの間のチャット。アシスタントは、ユーザーの質問に対して、役に立ち、詳しく、丁寧な回答を提供します。

<|user|>

この画像を説明してください

<|assistant|>

画像は立方体の3Dモデルです

プレゼンテーションの画像に基づいて質問します(または終了するには「exit」と入力):このチャートについて説明してもらえますか?

スライド番号(1~41)を入力して、画像について質問してください:1

モデルの応答:<|system|>

好奇心旺盛なユーザーと人工知能アシスタントとの間のチャット。アシスタントは、ユーザーの質問に対して、役に立ち、詳しく、丁寧な回答を提供します。

<|user|>

このチャートについて説明してもらえますか?

<|assistant|>

ここには、第1世代から第4世代までのエンタープライズ・クラウド市場の成熟度の変化というタイトルの棒グラフがあります。x軸は世代の進歩を示し、y軸は長年にわたる成熟度の進歩を示します。図は、世代が進むにつれてエンタープライズ・クラウド市場の成熟度が高まることを示しています。

プレゼンテーションの画像に基づいて質問します(または終了するには「exit」と入力):exit

ユーザーが画像関連の質問をすると、Granite Visionモデルは選択された画像を処理し、視覚的なコンテンツの理解に基づいて回答を生成しました。

「この画像は何ですか?」という質問には(スライド2)、モデルは画像を「3Dモデル」として識別しましたが、最小限の説明を行いました。

「この画像を説明してください」(スライド2)については、モデルは応答を改良し、「立方体の3Dモデル」であると識別しました。

「このチャートについて説明していただけますか?」(スライド1)に対して、このモデルでは、棒グラフについて詳しく説明し、そのタイトル、x軸、y軸、全体的な傾向について説明し、エンタープライズ・クラウドの成熟度が世代間でどのように進行しているかを示しました。

このステップでは、ユーザーは、インテリジェントな分析と説明のためにIBM Granite Visionモデルを活用することで、チャート、図表、インフォグラフィックなどの視覚要素を操作できます。

重要ポイント

  1. モデルは基本的な形状とオブジェクトを認識しますが、一部の画像については一般化された説明を提供する場合があります。
  2. チャートや図表については、タイトル、軸ラベル、傾向など、構造化された洞察が得られるため、ビジネスやデータのプレゼンテーションに役立ちます。
  3. 応答の精度は画像の明瞭さと複雑さに依存し、よりシンプルな画像(3Dモデルなど)は短い応答を得ることができ、構造化された視覚化(チャートなど)はより詳細な洞察を得ることができます。

このチュートリアルでは、IBM Granite Visionの画像解釈機能を紹介します。

関連ソリューション
IBM Maximo Visual Inspection

外観検査を自動化する優れたノーコード・コンピューター・ビジョンの機能を活用します。

Maximoによる外観検査の詳細はこちら
人工知能(AI)コンサルティングおよびサービス

IBMコンサルティングAIサービスは、企業がAIをトランスフォーメーションに活用する方法を再考するのに役立ちます。

人工知能サービスの詳細はこちら
人工知能ソリューション

業界をリードするIBMのAIに関する専門知識とソリューションのポートフォリオで、ビジネスにAIを活用しましょう。

AIソリューションの詳細はこちら
次のステップ

IBM Maximo Visual Inspectionは、コンピューター・ビジョンのAI機能を品質管理チームや検査チームに提供します。外観検査を自動化する優れたノーコード・コンピューター・ビジョンの機能を活用できます。

Maximoによる外観検査の詳細はこちら 製品ツアーはこちら