
Lucas Mitchell
Automation Engineer

画像ベースのCAPTCHAはどこにでもあります — ログインフォーム、サインアップページ、チケット販売サイト、政府ポータルなど。これらは歪んだ文字、数字、またはその両方の組み合わせの画像を表示し、ユーザーに見たものを入力するよう求めます。従来のツールでこれらを自動化するには、独自のOCRパイプラインを構築し、ノイズフィルターを処理し、すべてのフォントと歪みタイプに対して特殊なケースを処理する必要があります。
独自のモデルをトレーニングすることなく、n8nワークフロー内で画像CAPTCHAを自動的に解決できるとしたらどうでしょうか?再利用可能な解決APIを構築している場合でも、画像CAPTCHAの読み取りを必要とするフォーム送信を自動化している場合でも、すべて可能です。
このガイドでは、n8n(ビジュアルワークフロー自動化ツール)と**CapSolver**(AIを活用したCAPTCHA解決サービス)を組み合わせて、オンデマンドで画像からテキストへのCAPTCHAを解決する方法を学びます — スタンドアロンのAPIエンドポイントとして、またはより大きな自動化ワークフローのステップとして。
構築するもの:
解決API — 他のツールが呼び出すことができる再利用可能なエンドポイント:
直接使用ワークフロー — CapSolverをより大きな自動化のステップとして埋め込む:
ImageToTextTaskは、CapSolverのOCRベースの認識サービスです。base64エンコードされたCAPTCHA画像を送信すると、CapSolverは認識されたテキスト(文字、数字、またはその両方)を即座に返します。
これは、reCAPTCHAやTurnstileなどの他のCapSolver操作とは根本的に異なります。
| 機能 | ImageToText (認識) | reCAPTCHA / Turnstile (トークン) |
|---|---|---|
| リソースタイプ | 認識 | トークン |
| 入力 | Base64画像 | ウェブサイトURL + サイトキー |
| 結果 | 認識されたテキスト (即時) | トークン (ポーリングが必要) |
| プロキシが必要 | いいえ | タスクタイプによる |
| ユースケース | 画像から歪んだテキストを読み取る | 検証トークンを生成する |
主な違いは、認識操作は即座に結果を返すことです — タスクの作成やポーリングはありません。画像を送信すると、CapSolverがそれを読み取り、テキストが単一のリクエスト-レスポンスサイクルで返されます。
| パラメータ | 値 | 説明 |
|---|---|---|
body |
Base64文字列 | CAPTCHA画像、base64エンコード。改行文字なし、data:image/...;base64,プレフィックスなし — 生のbase64文字列のみ |
module |
"common" |
認識モジュール。"common"は一般的な英数字OCRを処理します |
| パラメータ | 説明 |
|---|---|
websiteURL |
CAPTCHAが表示されるページのURL(CapSolverが認識を最適化するのに役立ちます) |
images (1-9) |
複数の画像CAPTCHAを解決する際の"number"モジュール用の追加画像 |
| モジュール | 目的 |
|---|---|
common |
一般的なOCR — 文字、数字、混合文字。ほとんどのCAPTCHAのデフォルト |
number |
数字のみのCAPTCHA。imagesパラメータを介して最大9つの追加画像によるバッチ解決をサポート |
始める前に、以下があることを確認してください。
重要: CapSolverアカウントに十分な残高があることを確認してください。ImageToTextタスクは使用量に基づいてクレジットを消費します。
CapSolverはn8nの公式統合として利用可能です — コミュニティノードのインストールは不要です。ワークフローを構築する際に、ノードパネルで直接見つけることができます。
公式統合であるため、CapSolverノードがアカウントで認証できるように、n8nでクレデンシャルを作成する必要があります。
n8nインスタンスに移動し、Settings -> Credentialsに移動します。ここに構成済みのすべてのクレデンシャルが表示されます。

All(デフォルト)のままにしますn8nは自動的に接続をテストします。APIキーが有効であることを確認する緑色の**「Connection tested successfully」**バナーが表示されます。

重要: ワークフロー内のすべてのCapSolverノードはこのクレデンシャルを参照します。一度作成するだけで済みます — すべての解決ワークフローで同じクレデンシャルが共有されます。
これで、ImageToText解決ワークフローを構築する準備ができました!
ワークフローに入る前に、ImageToTextTaskのbase64要件を理解することが重要です。これは最も一般的なエラーの原因です。
bodyパラメータには、クリーンなbase64文字列 — 画像ファイルの生のエンコードされたバイトが含まれている必要があります。具体的には:
data:プレフィックスなし — data:image/png;base64,iVBORw0KGgo...がある場合、data:image/png;base64,部分を削除する必要があります\n文字のない単一の連続した行である必要がありますn8nのHTTP Requestノードで画像をフェッチすると、応答はバイナリデータとして届きます。CapSolver用にbase64に変換するには、Codeノードを使用します。
// バイナリ画像データをクリーンなbase64に変換
const binaryData = $input.first().binary.data;
const base64String = binaryData.data; // n8nのバイナリ形式ではすでにbase64
// data:プレフィックスがあれば削除(安全チェック)
const cleanBase64 = base64String.replace(/^data:image\/\w+;base64,/, "");
// 改行文字を削除
const finalBase64 = cleanBase64.replace(/\n/g, "");
return [{ json: { body: finalBase64 } }];
| エラー | 結果 |
|---|---|
data:image/png;base64,...を送信 |
CapSolverがコンテンツを無効として拒否 |
| Base64文字列に改行文字が含まれている | CapSolverが画像をデコードできない |
| base64ではなく画像URLを送信 | パラメータが間違っています — bodyはbase64を期待しており、URLではありません |
| 空の文字列を送信 | CapSolverがエラーを返す |
このワークフローは、base64 CAPTCHA画像を許容し、認識されたテキストを返すPOST APIエンドポイントを作成します。
ワークフローは6つのノードで構成されています。
bodyが存在し、有効なbase64であることをチェックするCodeノード| 設定 | 値 |
|---|---|
| HTTPメソッド | POST |
| パス | solver-image-to-text |
| レスポンス | Response Node |
これにより、https://your-n8n-instance.com/webhook/solver-image-to-textにエンドポイントが作成されます。
このノードは、リクエスト本文に有効なbodyパラメータが含まれていることを確認し、data:プレフィックスや偶発的な改行文字を削除します。
const body = $input.first().json.body;
if (!body || !body.body) {
return [{ json: { error: 'Missing required field: body (base64 encoded image)' } }];
}
let imageBase64 = String(body.body);
// data:プレフィックスが誤って含まれている場合は削除
imageBase64 = imageBase64.replace(/^data:image\/\w+;base64,/, '');
// 改行文字と空白を削除
imageBase64 = imageBase64.replace(/[\n\r\s]/g, '');
// 基本的なbase64検証
if (!/^[A-Za-z0-9+\/]+=*$/.test(imageBase64)) {
return [{ json: { error: 'Invalid base64 encoding in body field' } }];
}
return [{
json: {
body: imageBase64,
module: body.module || 'common'
}
}];
| パラメータ | 値 | 説明 |
|---|---|---|
| リソース | Recognition |
認識リソースを選択(トークンではない) |
| 操作 | Image To Text |
ImageToTextTask操作 |
| ボディ | {{ $json.body }} |
クリーンなbase64画像文字列 |
| モジュール | {{ $json.module }} |
認識モジュール(デフォルト: common) |
重要: CapSolverノードでは、まずResource = Recognitionを選択し、次にOperation = Image To Textを選択する必要があります。これはreCAPTCHAやTurnstileなどのトークン操作とは異なります。また、このノードでCapSolverクレデンシャルを選択してください。
| 設定 | 値 |
|---|---|
| 条件 | ={{ $json.error }} が空ではない |
| Trueブランチ | Error Respond to Webhookノードに移動 |
| Falseブランチ | Success Respond to Webhookノードに移動 |
CapSolverノードはエラー時に続行するため(onError: continueRegularOutput)、エラーはワークフローをクラッシュさせるのではなく、`{