mcpField
M
mistral-ocr

mistral-ocr

github.com/parlamento-aiドキュメント216 回インストール
リポジトリ

mistral-ocr について

Mistral の OCR API で PDF や画像からテキストを抽出するスキルです。AI エージェントが URL またはローカルファイルを処理し、結果を Markdown で保存する手順を案内します。

主な機能

  1. 01PDF から Markdown への抽出
  2. 02画像ファイルの OCR
  3. 03URL とローカルファイルの入力
  4. 04Markdown と構造化 JSON の出力
  5. 05クロスプラットフォームの curl ワークフロー

活用シーン

  1. 01PDF を Markdown ファイルに変換
  2. 02画像からテキストを抽出
  3. 03レシート、フォーム、表の読み取り

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/parlamento-ai/parlamento-ai --skill mistral-ocr

インストール後、Claude Code で/mistral-ocrを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

reference/
formats.md
getting-started.md
guide.md
pdf-to-markdown.md

詳細

Mistral OCR

Mistral 専用の OCR API を使用して、画像や PDF からテキストを抽出します。外部依存関係は不要です。

要件

このスキルを使用するには、Mistral API キーが必要です。まだお持ちでない場合は、reference/getting-started.md のガイドに従ってください。

API キー

ユーザーは Mistral API キーを指定する必要があります。利用できない場合は、ユーザーに尋ねてください。

オプション 1(AI エージェントに推奨): ユーザーがメッセージでキーを直接指定する:

"Use this Mistral key: aBc123XyZ..."
"Convert this PDF to markdown, my API key is aBc123XyZ..."

オプション 2: 環境変数 $MISTRAL_API_KEY

オプション 3: Claude Code の設定(~/.claude/settings.json)

キーを利用できない場合は、console.mistral.ai で取得するようユーザーに案内してください。


API エンドポイント

すべてのドキュメント処理で、専用の OCR エンドポイントを使用してください:

POST https://api.mistral.ai/v1/ocr

モデル: mistral-ocr-latest


機能

1. PDF → Markdown(直接変換。変換処理は不要です!)
curl -s "https://api.mistral.ai/v1/ocr" \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-ocr-latest",
    "document": {
      "type": "document_url",
      "document_url": "https://example.com/document.pdf"
    }
  }'
2. 画像 → テキスト

JPG、PNG、WEBP、GIF に対応しています:

curl -s "https://api.mistral.ai/v1/ocr" \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-ocr-latest",
    "document": {
      "type": "image_url",
      "image_url": "https://example.com/image.jpg"
    }
  }'
3. ローカルファイル(Base64 データ URL)

ローカルの PDF や画像の場合は、Base64 にエンコードしてデータ URL を使用します。

必ず curl を使用してください(Git Bash 経由で Windows を含むすべてのプラットフォームで動作します):

# For local PDF
BASE64=$(base64 -w0 document.pdf)
curl -s "https://api.mistral.ai/v1/ocr" \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-ocr-latest",
    "document": {
      "type": "document_url",
      "document_url": "data:application/pdf;base64,'"$BASE64"'"
    }
  }'

# For local images (PNG, JPG, etc.)
BASE64=$(base64 -w0 image.png)
curl -s "https://api.mistral.ai/v1/ocr" \
  -H "Authorization: Bearer $MISTRAL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistral-ocr-latest",
    "document": {
      "type": "image_url",
      "image_url": "data:image/png;base64,'"$BASE64"'"
    }
  }'

MIME タイプ:

  • PDF:data:application/pdf;base64,...
  • PNG:data:image/png;base64,...
  • JPG:data:image/jpeg;base64,...
  • WEBP:data:image/webp;base64,...
4. 構造化 JSON 出力

請求書、フォーム、表の場合は、追加の依頼で JSON を指定するか、Document AI のアノテーションを使用します。


レスポンス形式

API は Markdown を直接返します:

{
  "pages": [
    {
      "index": 0,
      "markdown": "# Document Title\n\nExtracted content here...",
      "images": [],
      "tables": [],
      "dimensions": {"dpi": 200, "height": 842, "width": 595}
    }
  ],
  "model": "mistral-ocr-latest",
  "usage_info": {"pages_processed": 1, "doc_size_bytes": 12345}
}

ワークフロー

ユーザーが画像または PDF の OCR を依頼した場合
  1. API キーを取得する - 環境変数にない場合はユーザーに尋ねます
  2. 入力の種類(URL またはローカルファイル)を判定します
  3. ローカルファイルの場合は、必ず一時ファイルを使う方法を使用してください(「Argument list too long」エラーを回避します):
# Cross-platform temp directory
TMPDIR="${TMPDIR:-${TEMP:-/tmp}}"

# Step 1: Encode file to base64
base64 -w0 "document.pdf" > "$TMPDIR/b64.txt"

# Step 2: Create JSON request file
echo '{"model":"mistral-ocr-latest","document":{"type":"document_url","document_url":"data:application/pdf;base64,'$(cat "$TMPDIR/b64.txt")'"}}' > "$TMPDIR/request.json"

# Step 3: Call API with -d @file (use actual key, not variable)
curl -s "https://api.mistral.ai/v1/ocr" \
  -H "Authorization: Bearer YOUR_API_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d @"$TMPDIR/request.json" > "$TMPDIR/response.json"

# Step 4: Extract markdown with node (NOT jq - not available on all systems)
node -e "const fs=require('fs'); const r=JSON.parse(fs.readFileSync('$TMPDIR/response.json')); console.log(r.pages.map(p=>p.markdown).join('\n\n---\n\n'))"
  1. Write ツールを使用して .md ファイルに保存します
  2. ファイルの場所をユーザーに伝えます
重要:クロスプラットフォーム互換性
  • 必ず curl を使用してください(Git Bash 経由で Windows でも動作します)
  • リクエスト本文には必ず -d @file を使用してください(大きなファイルにも対応します)
  • jq は使用しないでください - 代わりに node を使って JSON を解析します
  • 一時ファイルには ${TMPDIR:-${TEMP:-/tmp}} を使用してください(すべてのシステムで動作します)
  • Windows で node を使って解析する前に、response.json をユーザーディレクトリにコピーしてください

使用例

ユーザーが次のように依頼した場合:

ユーザーの依頼操作
「この PDF を Markdown に変換して」PDF の OCR を実行し、.md ファイルとして保存します
「この画像からテキストを抽出して」画像の OCR を実行し、テキストを返します
「このドキュメントを .md にして」OCR を実行し、.md ファイルとして保存します
「この PDF には何と書いてある?」OCR を実行し、内容を要約します
「このレシートを OCR して」テキストを抽出し、必要に応じて JSON として構造化します

エラー処理

エラー原因解決策
401 UnauthorizedAPI キーが無効キーを確認し、getting-started.md の取得方法を案内します
400 Bad Requestドキュメントが無効形式と URL へのアクセス可否を確認します
3310 File fetch errorURL にアクセスできないローカルファイルには Base64 を使用します
Rate limitリクエストが多すぎる待ってから再試行します

対応形式

形式対応状況
PDF✅ 直接対応(変換不要)
PNG✅ 直接対応
JPG/JPEG✅ 直接対応
WEBP✅ 直接対応
GIF✅ 直接対応

外部依存関係は不要です! 他の OCR ソリューションとは異なり、Mistral OCR は pdftoppm、ImageMagick、その他のツールを必要とせず、PDF を直接処理します。


料金

2025 年時点の Mistral OCR の料金:

  • 1,000 ページあたり $2
  • Batch API では 50% 割引

最新の料金は mistral.ai/pricing で確認してください。


参考資料


Parlamento AI によるスキル

コメント