首页 > 其他分享 >使用 Kotlin 实现英文数字验证码识别

使用 Kotlin 实现英文数字验证码识别

时间:2025-01-05 13:11:17浏览次数:1  
标签:OCR val Kotlin 验证码 opencv 识别

Kotlin 是一种现代化的、跨平台的编程语言,尤其适合用于 Android 开发和服务端开发。通过结合 Kotlin 的图像处理和 OCR 库,可以实现验证码的识别功能。

  1. 项目准备
    所需依赖
    在 Kotlin 项目中,我们需要以下库:

Tess4J - 基于 Tesseract OCR 引擎的 Java 库,用于 OCR 功能。
OpenCV(可选) - 用于验证码图像的预处理。
配置 Gradle
在项目的 build.gradle 文件中添加以下依赖:

gradle

dependencies { implementation("net.sourceforge.tess4j:tess4j:5.4.0") implementation("org.bytedeco:opencv:4.8.0-1.5.8") }

  1. Kotlin 实现代码
    以下是一个使用 Kotlin 进行英文数字验证码识别的完整代码示例:

kotlin

import net.sourceforge.tess4j.Tesseract import net.sourceforge.tess4j.TesseractException import org.bytedeco.opencv.global.opencv_imgcodecs.* import org.bytedeco.opencv.global.opencv_imgproc.* import org.bytedeco.opencv.opencv_core.* fun main() { val imagePath = "captcha_image.png" // 验证码图片路径 // 图像预处理 val processedImagePath = preprocessImage(imagePath) // 调用 OCR 识别验证码 val captchaText = recognizeCaptcha(processedImagePath) // 输出识别结果 println("识别到的验证码是: $captchaText") } // 图像预处理函数 fun preprocessImage(imagePath: String): String { // 读取图像 val src = imread(imagePath, IMREAD_COLOR) // 转为灰度图 val gray = Mat() cvtColor(src, gray, COLOR_BGR2GRAY) // 二值化 val binary = Mat() threshold(gray, binary, 127.0, 255.0, THRESH_BINARY) // 保存处理后的图像 val processedImagePath = "processed_captcha.png" imwrite(processedImagePath, binary) return processedImagePath } // OCR 识别函数 fun recognizeCaptcha(imagePath: String): String { val tesseract = Tesseract() // 设置 Tesseract 数据路径和语言 tesseract.setDatapath("tessdata") // 确保 tessdata 文件夹存在并包含语言数据文件 tesseract.setLanguage("eng") // 设置识别语言为英文 return try { tesseract.doOCR(java.io.File(imagePath)) } catch (e: TesseractException) { e.printStackTrace() "识别失败" } }

  1. 代码解析

使用 OpenCV 库读取和处理图片。
转换为灰度图:减少颜色维度的干扰。
二值化处理:将灰度图像转换为黑白图,突出字符区域。

使用 Tess4J 调用 Tesseract OCR 引擎识别图片中的文字。
配置语言为英文(eng)。

调用图像预处理函数生成优化后的图片。
使用 OCR 识别预处理后的图片内容,并输出验证码。
4. 示例运行结果
假设图片内容为 K7XJ3,运行程序后,终端会输出:

makefile

识别到的验证码是: K7XJ3

  1. 文件结构

plaintext

project/ ├── src/ │ └── main/ │ └── kotlin/ │ └── Main.kt # 主程序文件 ├── resources/ │ ├── captcha_image.png # 验证码图片 │ └── tessdata/ # Tesseract 语言数据文件

注意:
tessdata 文件夹中需要包含语言数据文件(如 eng.traineddata)。你可以从 Tesseract 官方仓库 下载。
6. 优化方向

标签:OCR,val,Kotlin,验证码,opencv,识别
From: https://www.cnblogs.com/ocr12/p/18653280

相关文章

  • paddleocr 识别的核心部分的代码
    Lib\site-packages\paddleocr\tools\infer\predict_system.py(用的python39目录里边的库def__call__(self,img,cls=True,slice={}):time_dict={"det":0,"rec":0,"cls":0,"all":0}ifimgisNone:logg......
  • 基于语音识别的分类垃圾桶设计(论文+源码)
    1系统整体方案设计本次课题为基于语音识别的分类垃圾桶系统设计,在此将功能设计如下:(1)设置3个垃圾桶,分别放置可回收物、厨余垃圾、其他垃圾;(2)通过语音识别模块与舵机模块,控制相应垃圾桶打开盖子,同时进行语音提醒;(3)开启垃圾桶后,延时5秒钟自动关闭;(4)超声波模块检测当前各桶内垃圾......
  • 计算机毕业设计Python+Spark中药推荐系统 中药识别系统 中药数据分析 中药大数据 中药
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • Kotlin语言的学习路线
    Kotlin语言的学习路线Kotlin是一种现代化的、静态类型的编程语言,由JetBrains开发。它可以与Java无缝互操作,并且在Android开发中得到了越来越广泛的应用。由于Kotlin简洁的语法和强大的功能,它逐渐成为了许多开发者的首选语言。在本文中,我们将详细讨论Kotlin语言的学习路线,帮......
  • 安卓笔记3——kotlin不写必忘的标准方法
    标准函数with接受2个参数,一个提供默认调用的对象,另一个是lambda当反复调用同一个对象时,方便省略最后一行作为函数返回值valresult=with(StringBuilder()){append("xxx")append("xxx")append("xxx")}run与with类似,但是只接受一个lambda参数,内部的默认......
  • 使用C#和Selenium破解滑动验证码
    滑动验证码是一种常见的验证码形式,通过拖动滑块将缺失的拼图块对准原图中的空缺位置来验证用户操作。本文将介绍如何使用C#中的OpenCV进行模板匹配,并结合Selenium实现自动化破解滑动验证码的过程。所需技术OpenCV模板匹配:用于识别滑块在背景图中的正确位置。C#:主要编程语言。S......
  • 使用Python和Playwright破解滑动验证码
    滑动验证码是一种常见的验证码形式,通过拖动滑块将缺失的拼图块对准原图中的空缺位置来验证用户操作。本文将介绍如何使用Python中的OpenCV进行模板匹配,并结合Playwright实现自动化破解滑动验证码的过程。所需技术OpenCV模板匹配:用于识别滑块在背景图中的正确位置。Python:主要编......
  • Java实现验证码识别
    一、准备工作安装JDK并配置环境变量。安装Eclipse或IntelliJIDEA作为开发工具。安装SeleniumWebDriver库和Tesseract-OCR库。二、打开网站并设置浏览器窗口首先,打开浏览器并将窗口最大化,以确保每次截取的图片都是相同的大小:javaimportorg.openqa.selenium.WebDriver;im......
  • 护目镜佩戴自动识别预警摄像机
    护目镜佩戴自动识别预警摄像机是一种智能监测设备,专门用于佩戴护目镜的工人进行作业时,能够自动识别有潜在风险的场景,并及时发出预警信号。该摄像机配备人脸识别和智能预警系统,可以检测危险情况并为工人提供实时安全保护,大大提高了工作场所的安全性。这种摄像机通过人脸识别技术,......
  • 河道采砂船监测识别摄像机
    河道采砂船监测识别摄像机是一种用于监测和识别河道采砂船的智能设备,其作用是通过摄像头和人脸识别技术,实时监测和记录河道上的采砂船情况,为监管部门提供有效的数据支持。这种摄像机可以有效地监测河道采砂行为,规范采砂作业,提高执法效率,保护河流生态环境。采砂是一种常见的河道......