
Lucas Mitchell
Automation Engineer

ocr_gif示例返回文本。createTask返回识别结果;默认情况下不要添加轮询阶段。ImageToTextTask和VisionEngine是图像识别任务系列,它们的请求字段和模块特定的响应不同。正确选择取决于您的授权应用程序支持的挑战格式以及应用程序需要的下一个答案。
在CapSolver中,选择正确的系列不仅仅是更改任务名称。一个期望识别字符的解析器无法安全地消费距离或角度。相反,当应用程序的下一步只是将识别的字符串与已知的测试用例进行比较时,几何答案是不必要的。
光学字符识别,或OCR,从图像中提取文本。这有助于解释一类CAPTCHA识别,但“图像CAPTCHA”比OCR更广泛。挑战可以要求文本、位置或另一种支持的视觉关系。
本指南比较了记录的合同和评估选择。其场景涉及自有的CAPTCHA测试用例和允许的QA。它不提供与任意网站交互的通用脚本,也不声称识别结果可以单独完成浏览器挑战。
任务合同决定了您发送的图像数据以及如何解释结果。
| 比较 | ImageToTextTask | VisionEngine |
|---|---|---|
| 主要请求图像字段 | body |
image |
| 任务选择 | ImageToTextTask,带有记录的模块选项 |
VisionEngine 加上支持的命名 module |
| 预期的输出 | 文本或模块特定的答案 | 模块特定的文本或几何结果 |
| 结果交付 | 直接的createTask响应 | 直接的createTask响应 |
| 主要集成问题 | 所选的识别模式是否与预期答案匹配? | 精确的模块是否与图像格式和输出合同匹配? |
| 不安全的假设 | 每个响应都是一串文本 | 每张图像都可以使用相同的模块或解析器 |
ImageToTextTask参考记录了body中的Base64图像内容,没有换行符或数据-URI前缀。其示例区分了text和模块特定的answers。请阅读所选模块的响应,而不是将每个成功的结果扁平化为单个字符串。
VisionEngine参考记录了命名模块:例如slider_1返回distance,旋转模块返回angle,botdeflector返回points。ocr_gif示例返回text。通用属性表列出了imageBackground为必需项,而多个模块示例中省略了它。根据精确的模块示例解决该差异,并在实现前确认任何剩余的模糊性。
这些示例确立了支持的合同,而不是通用的图像理解。任务名称不是发明模块、添加自由格式提示或期望所选模块未记录的响应类型的许可。
当支持的挑战的有用答案是识别的文本且记录的模块适合您的输入时,从ImageToTextTask开始。
假设您的团队维护一个遗留的联系表单,并有一个允许的字符图像测试集。评估问题是具体的:识别路径是否能返回测试用例预期的字符?您可以将返回的字符串与测试标签进行比较,而无需涉及浏览器坐标或指针移动。
在评估求解器之前定义应用程序的文本规则。您自己的表单是否区分大小写?是否保留前导零?是否接受空格?这些都是您控制的应用程序的属性。它们不应被通用的结果清理函数无声地更改。
例如,标记为“007A”的测试用例在整个比较过程中应保持为字符串。将其结果视为数字会使应用程序解析器负责一个可避免的错误。这是一个说明性验证示例,而不是报告的求解器输出。
保持空结果和错误响应形状的区分。缺少的预期字段是需要检查的集成问题。正确形状但错误的答案属于识别评估。将两者合并为一个“准确率”数字会隐藏任务选择或图像识别是否需要关注。
当记录的模块与挑战格式匹配且其返回结构是应用程序需要的信息时,评估VisionEngine。
对于受控图像测试,角度和点列表代表不同的断言。角度可以与测试用例的预期方向进行比较。点列表需要其自己的解释规则。两者都不应通过为字符识别编写的解析器。
准备一个模块特定的适配器,具有明确的窄责任:接受记录的结果形状,验证它,并将解释后的答案传递给自有的应用程序。不要让该适配器决定要操作的无关浏览器控制。保持识别解释的独立性,使故障更容易通过存储的测试用例重现。
OCR模块的存在也防止了“文本始终意味着ImageToTextTask”的简单规则。对于动画文本输入,请在选择之前检查记录的支持格式和模块。答案格式本身并不能确定两个任务是否接受相同的输入或在它们上表现同样好。
如果没有记录的模块与挑战匹配,请将其记录为不支持或未解决。不断更改请求标签直到API接受负载不是可靠的评估方法。请求的接受并不能证明其识别模型适合图像。
领取您的CapSolver优惠码
立即提升您的自动化预算!
在充值CapSolver账户时使用优惠码 CAP26,每次充值可获得额外 5% 的奖励 —— 没有上限。
现在在您的 CapSolver仪表板 中领取
图像准备应保留每个候选任务所需的证据,因此评估衡量任务匹配度而非意外的预处理差异。
Base64是字节的表示方式。 RFC 4648 Base64规范 定义了编码;它不确立编码文件是识别模块的正确图像。有效负载可以是语法编码的,但仍包含过时的挑战、错误的裁剪或不支持的图像格式。
对于每个自有测试用例,保留原始图像的引用,并记录提交前进行的任何转换。例如包括调整大小、扁平化动画或更改裁剪。避免对每个任务系列无声地应用相同的转换:移除动画帧可能会改变用于动画输入任务的信息。
如果评估的模块需要前景和背景图像,请确保它们属于同一测试用例实例。将一个刷新的前景与另一个的背景组合会导致输入不匹配。该故障不应被计为有效模块不准确的证据。
使用合成或批准的测试图像,不含无关的个人信息。整个支持页面的截图可能包含比挑战更多的内容。限制提交的图像仅限于允许的输入会使测试更清晰,并减少不必要的数据暴露。
坐标结果需要在应用程序正确使用之前就图像和布局参考框架达成一致。
相对于原始图像测量的点并不自动是浏览器视口中的点。 浏览器边界矩形定义 描述了相对于视口的矩形,并包括元素的边框和内边距。这与假设显示的元素完全匹配原始图像尺寸不同。
在自有QA测试套件中,将坐标解释作为单独的组件进行测试。记录测试用例的尺寸、实际呈现给求解器的尺寸以及用于评估答案的应用程序表示。如果这些表示不同,应用程序需要一个明确的、经过测试的映射,适合其自己的界面。
不要将成功的识别响应作为该映射正确的证明。一个有用的测试可以在任何浏览器操作发生之前将解释后的结果与标记的测试用例进行比较。第二个测试可以验证自有组件是否按预期使用该解释后的结果。
这种分离也有助于刷新的挑战。如果UI在识别运行时替换图像,答案仍然属于原始测试用例。您的应用程序应丢弃该过时的关联,而不是将结果应用于替换的图像。
公平的比较将结果按支持的挑战家族分组,并分别统计完成的应用程序结果和有效的API响应。
从具有代表性和授权的测试用例集开始。包括应用程序实际生成的图像变化,例如其正常尺寸和预期的字符范围。保留一个标记的保留集用于评估,以避免仅根据导致它们的相同示例进行判断。
分别记录这些类别:
| 评估类别 | 它告诉您的内容 |
|---|---|
| 输入被拒绝 | 请求或格式需要关注 |
| 返回预期的响应结构 | 解析器合同已满足 |
| 答案与测试用例匹配 | 识别符合测试用例的标准 |
| 自有应用程序接受答案 | 集成保留了结果的预期含义 |
| 在测试用例替换后结果到达 | 时间或生命周期使答案不可用 |
不要使用一个总体准确率分数来比较不相关的任务。文本测试用例和几何测试用例测试不同的输出。当两个记录的选项确实适合相同的输入家族时,保持测试用例集和成功定义不变。
对于成本,根据成功且相关的结果进行总评估支出测量,并考虑工程工作。一个需要频繁手动调查的解析器即使任务费用较低也可能耗费时间。API字段名称本身不会确立通用的价格或性能赢家。
这些是评估建议,而不是基准结果。在做出准确率、速度或节省的声明之前,先在您的授权应用程序上运行它们。
任务选择清单应识别支持的输入、预期答案、交付行为和应用程序接受测试。
对于每个支持的CAPTCHA家族,记录所选任务和模块、图像准备规则、预期解决方案字段以及响应具有其他形状时会发生什么。当您的应用程序更改其CAPTCHA实现时,指定负责人审查这些假设。
将可访问性审查与识别评估分开。 W3C关于CAPTCHA不可访问性的讨论 解释了挑战机制创建的障碍。在自动化QA流程中添加求解器并不能证明公共表单提供了可访问的体验。站点所有者仍需评估适当用户替代方案。
有关识别层的更广泛解释,请参阅 图像识别API如何适应自定义CAPTCHA自动化。在选择精确的任务合同时返回此比较。
从支持的 CapSolver 任务、一个小的标记测试集和一个保留记录结果的解析器开始。仅在每个新输入家族都有自己的明确接受标准后才扩展覆盖范围。
Q: VisionEngine 是否是 ImageToTextTask 的替代品?
VisionEngine 不是通用替代品。选择其记录的模块支持输入并提供应用程序预期结果的任务。不同的响应形状和图像要求可能需要不同的适配器。
Q: VisionEngine 是否始终返回坐标?
VisionEngine 不总是返回坐标。其模块示例包括几何结果和一个返回文本的OCR示例。请阅读所选模块的响应合同,而不是从任务系列名称推断它。
Q: 这些任务系列是否需要 getTaskResult 轮询?
两个链接的任务系列参考描述了通过 createTask 直接返回的结果。共享的 API 包装器应保留直接解决方案,而不是自动启动轮询循环。
Q: 识别的答案能否证明 CAPTCHA 表单有效?
识别的答案既不能证明正确的结果路由,也不能证明表单完成。将答案与测试用例进行验证,然后检查自有应用程序是否将其用于预期的挑战并达到预期结果。