mistral-ocr について
Mistral の OCR API で PDF や画像からテキストを抽出するスキルです。AI エージェントが URL またはローカルファイルを処理し、結果を Markdown で保存する手順を案内します。
主な機能
- 01PDF から Markdown への抽出
- 02画像ファイルの OCR
- 03URL とローカルファイルの入力
- 04Markdown と構造化 JSON の出力
- 05クロスプラットフォームの curl ワークフロー
活用シーン
- 01PDF を Markdown ファイルに変換
- 02画像からテキストを抽出
- 03レシート、フォーム、表の読み取り
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ parlamento-ai/ parlamento-ai --skill mistral-ocrインストール後、Claude Code で/mistral-ocrを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/formats.mdgetting-started.mdguide.mdpdf-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 を依頼した場合
- API キーを取得する - 環境変数にない場合はユーザーに尋ねます
- 入力の種類(URL またはローカルファイル)を判定します
- ローカルファイルの場合は、必ず一時ファイルを使う方法を使用してください(「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'))"
- Write ツールを使用して .md ファイルに保存します
- ファイルの場所をユーザーに伝えます
重要:クロスプラットフォーム互換性
- 必ず 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 Unauthorized | API キーが無効 | キーを確認し、getting-started.md の取得方法を案内します |
| 400 Bad Request | ドキュメントが無効 | 形式と URL へのアクセス可否を確認します |
| 3310 File fetch error | URL にアクセスできない | ローカルファイルには Base64 を使用します |
| Rate limit | リクエストが多すぎる | 待ってから再試行します |
対応形式
| 形式 | 対応状況 |
|---|---|
| ✅ 直接対応(変換不要) | |
| PNG | ✅ 直接対応 |
| JPG/JPEG | ✅ 直接対応 |
| WEBP | ✅ 直接対応 |
| GIF | ✅ 直接対応 |
外部依存関係は不要です! 他の OCR ソリューションとは異なり、Mistral OCR は pdftoppm、ImageMagick、その他のツールを必要とせず、PDF を直接処理します。
料金
2025 年時点の Mistral OCR の料金:
- 1,000 ページあたり $2
- Batch API では 50% 割引
最新の料金は mistral.ai/pricing で確認してください。
参考資料
- はじめに - API キーの取得方法
- PDF から Markdown への変換 - PDF 変換の例
- 出力形式 - JSON、Markdown、プレーンテキスト
- ステップごとのガイド - 例を含む完全なチュートリアル
Parlamento AI によるスキル