
Nikolai Smirnov
Software Development Lead
已发表 Oct 13, 2026
已更新 Oct 13, 2026 · 最小阅读量

ImageToTextTask。ImageToTextTask直接返回识别结果;不需要单独的结果轮询循环。Python脚本可以访问受限制的表单并停在一张包含扭曲字母或数字的小图像上。下一步是直接的:捕获当前图像,请求图像CAPTCHA求解器识别其字符,然后将返回的文本提交到匹配的表单中。
CapSolver 提供了ImageToTextTask用于此识别步骤。本指南使用其官方Python SDK示例,并解释如何准备输入、读取结果以及诊断调用中常见的错误。在您拥有或被允许自动化的表单上使用此工作流;识别响应不会更改目标的访问规则。
ImageToTextTask识别图像中的文本,并返回您的Python应用程序可以使用的字符。
这是一个光学字符识别任务。输入是一张图像;有用输出是该图像中显示的文本。它适合要求您将显示的字符输入到答案字段中的表单。
reCAPTCHA复选框或Turnstile小部件是不同的集成方式。不要将整个小部件的截图发送到ImageToTextTask并期望获得浏览器验证令牌。当应用程序需要令牌而不是识别出的文本时,请使用对应的文档任务。
首先检查表单的要求。如果它在文本输入旁边显示一个字符图像,图像识别可能是合适的。如果它要求网格交互、不可见的检查或不同的挑战格式,请在选择API之前识别该格式。
您需要一个当前的CAPTCHA图像、Python、CapSolver包以及具有所需服务访问权限的CapSolver账户密钥。
将您批准的测试或应用程序中的图像保存为captcha.png。保持完整的字符区域可见。不要包含无关的页面文本、浏览器控件或另一个CAPTCHA。目标是发送用户在该特定表单尝试中会阅读的图像。
在您的Python环境中安装官方包:
python -m pip install capsolver==1.0.7
这固定了本指南背后包检查使用的SDK版本。Python的包安装指南解释了为什么在不同项目需要不同依赖项时,隔离环境是有用的。
本指南后面的实时SDK调用需要您的真实账户密钥和完整的Base64图像字符串。这些是必需的输入,而不是文档中显示的可替换占位符。示例来自CapSolver的官方文档;此处未展示实时识别结果。
将账户密钥远离共享截图、源代码仓库和支持工单。当另一种CAPTCHA类型有页面的公开站点密钥时,它不能替代CapSolver账户密钥。
在将文件的二进制内容转换为纯Base64字符串后,将其放入任务的body字段中。
将以下准备脚本保存为prepare_image.py,与captcha.png位于同一目录:
from pathlib import Path
import base64
image_bytes = Path("captcha.png").read_bytes()
image_base64 = base64.b64encode(image_bytes).decode("ascii")
Path("captcha-base64.txt").write_text(image_base64, encoding="ascii")
print("Saved Base64 image to captcha-base64.txt")
用python prepare_image.py运行它。文本文件包含下一步中body字段的完整值。
该脚本使用Python的文档化二进制文件读取和Base64编码。它本地准备输入;不调用CapSolver或识别字符。
在继续之前打开源图像。如果之前的下载保存了HTML错误页面,名为captcha.png的文件仍可能包含错误数据。确认它显示预期的图像,并且文本文件是从该文件创建的。
不要将本地路径如captcha.png作为任务正文发送。不要将图像URL编码为文本。API需要实际的图像字节作为Base64表示。
在替换必需的占位符后,使用文档中的ImageToTextTask调用capsolver.solve。
以下SDK示例来自官方ImageToTextTask文档。将其保存为solve_image.py。将...替换为您的账户密钥,并在运行python solve_image.py之前将整个缩写body字符串替换为captcha-base64.txt的内容。
import capsolver
capsolver.api_key = "..."
solution = capsolver.solve({
"type": "ImageToTextTask",
"module": "common",
"body": "/9j/4AAQSkZJRgABA......"
})
print(solution)
所示的密钥和图像字符串是文档占位符。不变地运行它们无法产生有用的识别结果。上面的单独准备步骤提供了真实的图像值;您的账户提供了密钥。
任务字段有小而特定的用途:
| 字段 | 提供什么 |
|---|---|
type |
ImageToTextTask |
module |
此处显示的通用示例为common |
body |
完整的Base64编码图像内容 |
websiteURL |
可选的源页面URL,如该任务的文档所述 |
官方文档还描述了用于数字图像的number模块。仅当图像包含数字且该文档模式与您的用例匹配时才选择它。不要猜测其他模块名称或从无关的识别任务中复制模块。
如果您以后更喜欢HTTP集成,相同的识别任务通过createTask提交。Python SDK是方便的方式,无需自己编写HTTP请求处理。
领取您的CapSolver优惠码
立即提升您的自动化预算!
在充值CapSolver账户时使用优惠码 CAP26,每次充值可获得额外 5% 的奖励 —— 没有限制。
现在在您的 CapSolver仪表板 中领取
ImageToTextTask直接返回识别输出,而不是需要单独的getTaskResult循环。
HTTP响应文档将识别的字符放在solution.text下。SDK示例返回解决方案对象;现有的Python图像CAPTCHA指南使用solution.get("text")读取其文本。
在使用之前检查实际响应。成功的结果应包含您提交的图像的识别字符。错误、缺失结果或空值不是要输入到表单中的答案。
不要添加从reCAPTCHA令牌教程复制的通用轮询循环。这些任务可能有不同的响应行为。额外的轮询不会改善已直接返回的图像结果。
还要区分识别和表单提交。打印解决方案确认您的脚本从求解步骤中获得了结果。周围的应用程序仍需要将该文本输入到适当的字段并检查表单的响应。
仅将识别出的文本用于提供该图像的表单尝试。
假设您的批准表单显示图像A。您的脚本捕获A,发送到CapSolver,并收到答案。如果页面在请求进行时刷新到图像B,则A的答案不再是当前表单的可靠输入。
保持页面和图像关联清晰。在有意请求新挑战之前完成当前尝试。如果发生刷新,请捕获替换的图像并将其视为新尝试,而不是重新提交之前的答案。
保留求解器返回的字符。除非目标表单明确要求,否则不要自动将字母转为小写、删除前导零或将答案转换为数字。文本值和数值可能代表不同的输入。
提交后,检查预期结果。对于拥有搜索表单,这可能是请求的结果面板。对于QA测试,这可能是应用程序的特定成功状态。CAPTCHA消失是有用的证据,但不总是完整的业务结果。
最快的修复方法是按顺序检查图像、请求和表单。
检查body是否包含Base64编码的图像字节。如果图像源添加了data:image/...;base64,前缀,请删除它,并避免换行符。确认文件是图像,而不是HTML页面或空下载。
使用CapSolver错误参考获取实际返回的代码。账户密钥问题、不支持的任务和无效的图像请求需要不同的修复。在检查错误之前,不要继续发送相同的被拒绝输入。
检查发送到API的确切图像。查看是否有截断的字符、旧图像或捕获中的无关文本。检查所选模块是否与字符内容匹配。
从您自己的测试中保留有限的诊断示例,排除敏感页面内容。这比挑战更改后的整个浏览器截图更有助于调查识别质量。
检查图像是否刷新,答案是否输入到正确的字段,以及应用程序是否报告了单独的表单验证错误。即使识别出的字符看起来正确,必填字段或过期的表单状态也可能阻止提交。
使用有限的重试策略。如果相同的失败重复发生,请停止并检查原因,而不是无限生成新图像并购买另一个结果。
保持Python图像CAPTCHA处理简洁:准备当前图像,提交ImageToTextTask,读取返回的文本,并验证匹配的表单尝试。
CapSolver 处理识别步骤。您的脚本提供有效的图像并保持答案与正确的操作相关联,这使得结果在实际自动化工作流中有用。
Q: ImageToTextTask是否需要结果轮询?
不需要。此任务直接返回图像识别结果。请遵循其文档中的响应行为,而不是添加用于异步令牌任务的轮询循环。
Q: 我可以将图像URL作为body传递吗?
不可以。文档中的body输入是Base64编码的图像内容。首先获取允许的图像字节,然后对其进行编码。
Q: 哪个值包含识别出的文本?
HTTP结果使用solution.text。在官方Python SDK模式中,从返回的解决方案对象中读取文本。
Q: 此示例可以解决reCAPTCHA复选框吗?
不可以。ImageToTextTask是文本识别任务。reCAPTCHA小部件需要对应的文档化reCAPTCHA集成,而不是将截图传递给此示例。
Q: 为什么表单拒绝了一个看似正确的答案?
答案可能属于之前的图像,被放入错误的字段,或伴随其他无效的表单值。在责怪图像识别之前,请检查当前表单及其实际响应。

Nikolai Smirnov
Software Development Lead
Building dependable software for complex automation.
关于作者