前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >phpy基于深度学习ddddocr库进行OCR双重数字识别

phpy基于深度学习ddddocr库进行OCR双重数字识别

作者头像
Tinywan
发布2024-09-17 12:34:12
1240
发布2024-09-17 12:34:12
举报
文章被收录于专栏:开源技术小栈

简介

ddddocr(Deep Double-Digital Digits OCR)是一个基于深度学习的数字识别库,专门用于识别双重数字(双位数字)的任务。它是一个开源项目,提供了训练和预测的功能,可用于识别图片中的双位数字并输出其具体的数值。

背景

在计算机视觉和图像处理领域,数字识别是一个常见的任务,用于从图像中提取数字并进行识别。通常,传统的数字识别算法在单个数字或多位数字的识别上表现良好,但对于双重数字(两位数字)的准确识别却面临一些挑战。这是因为双位数字在视觉上具有相对较高的相似性和重叠特征,使得传统方法的准确率有所下降。

为了解决双重数字识别的问题,ddddocr项目应运而生。该项目通过使用深度学习的方法,结合卷积神经网络(CNN)和循环神经网络(RNN),对双重数字进行高效准确的识别。通过训练模型并进行预测,ddddocr能够识别图像中的双位数字,并输出其具体数值。

ddddocr的目标是提供一个简单而有效的工具,帮助开发者和研究者在双重数字识别任务上取得更好的结果。通过使用该库,用户可以轻松地集成双重数字识别功能到自己的应用程序或项目中,实现更准确和可靠的数字识别功能。

特点和优势

  • 深度学习:ddddocr利用深度学习技术,特别是卷积神经网络和循环神经网络,对双重数字进行准确的识别。
  • 开源项目:ddddocr是一个开源项目,允许用户免费使用、修改和分发代码。这使得更多的开发者可以参与其中,贡献自己的想法和改进。
  • 高准确率:通过深度学习的方法,ddddocr在双重数字识别任务上能够取得较高的准确率,有效克服了传统方法在此任务上的困难。
  • 灵活性:ddddocr提供了训练和预测的功能,用户可以根据自己的需求自定义模型并进行训练,以适应不同的双重数字识别任务。

安装

代码语言:javascript
复制
pip install ddddocr

使用

基础ocr识别能力

主要用于识别单行文字,即文字部分占据图片的主体部分,例如常见的英数验证码等,本项目可以对中文、英文(随机大小写or通过设置结果范围圈定大小写)、数字以及部分特殊字符。

参考案例demo01.php

代码语言:javascript
复制
<?php
/**
 * @desc 基础ocr识别能力
 * @help https://github.com/sml2h3/ddddocr
 * @author Tinywan(ShaoBo Wan)
 */
declare(strict_types=1);

$ddd = PyCore::import('ddddocr');

// 图片文件路径
$file = '../demo01.png';

$imgBytes = PyCore::bytes(file_get_contents($file));

$ocr = $ddd->DdddOcr(show_ad: false);
$res = $ocr->classification($imgBytes);
echo $res . PHP_EOL;

识别案例图片demo01.png

执行输出结果

代码语言:javascript
复制
# php demo01.php

2bghz

识别案例图片demo02.png

执行输出结果

代码语言:javascript
复制
# php demo01.php

8A62N1

本库内置有两套ocr模型,默认情况下不会自动切换,需要在初始化ddddocr的时候通过参数进行切换

代码语言:javascript
复制
// 切换为第二套ocr模型
$ocr = $ddd->DdddOcr(beta:true);

打印输出结果

代码语言:javascript
复制
# php demo02.php

欢迎使用ddddocr,本项目专注带动行业内卷,个人博客:wenanzhe.com
训练数据支持来源于:http://146.56.204.113:19199/preview
爬虫框架feapder可快速一键接入,快速开启爬虫之旅:https://github.com/Boris-code/feapder
谷歌reCaptcha验证码 / hCaptcha验证码 / funCaptcha验证码商业级识别接口:https://yescaptcha.com/i/NSwk7i
8A62N1

目标检测能力

主要用于快速检测出图像中可能的目标主体位置,由于被检测出的目标不一定为文字,所以本功能仅提供目标的bbox位置 (在⽬标检测⾥,我们通常使⽤bbox(bounding box,缩写是 bbox)来描述⽬标位置。bbox是⼀个矩形框,可以由矩形左上⻆的 x 和 y 轴坐标与右下⻆的 x 和 y 轴坐标确定)

参考案例demo03.php

代码语言:javascript
复制
<?php
/**
 * @desc 目标检测能力
 * @help https://github.com/sml2h3/ddddocr
 * @author Tinywan(ShaoBo Wan)
 */
declare(strict_types=1);

$operator = PyCore::import("operator");
$builtins = PyCore::import("builtins");
$ddddocr = PyCore::import('ddddocr');

$cv2 = PyCore::import('cv2');

// 可以在初始化时通过传参ocr=False关闭ocr功能,开启目标检测需要传入参数`det=True`
$det = $ddddocr->DdddOcr(det: true, show_ad: false);
$f__object = PyCore::open('./demo04.png', "rb");
$f = $f__object->__enter__();
try {
    $image = $f->read();
} finally {
    $f__object->__exit__();
}

$bboxes = $det->detection($image);
PyCore::print($bboxes);
$im = $cv2->imread('./demo04.png');
$__iter = PyCore::iter($bboxes);
while ($current = PyCore::next($__iter)) {
    $bbox = $current;
    [$x1, $y1, $x2, $y2] = $bbox;
    $im = $cv2->rectangle($im, [$x1, $y1], [$x2, $y2], color: [0, 0, 255], thickness: 2);
}
$cv2->imwrite("./result.jpg", $im);

被检测的图片demo04.png

执行输出结果

代码语言:javascript
复制
# php demo03.php

[[55, 344, 90, 378], [26, 345, 58, 379], [0, 345, 29, 377]]

被识别的图片result.jpg

如果使用过程中无需调用ocr功能,可以在初始化时通过传参ocr=False关闭ocr功能,开启目标检测需要传入参数det=True

滑块检测

本项目的滑块检测功能并非AI识别实现,均为opencv内置算法实现。可能对于截图党用户没那么友好~,如果使用过程中无需调用ocr功能或目标检测功能,可以在初始化时通过传参ocr=False关闭ocr功能或det=False来关闭目标检测功能

更多参考:https://github.com/sml2h3/ddddocr?tab=readme-ov-file

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 背景
  • 特点和优势
  • 安装
  • 使用
    • 基础ocr识别能力
      • 目标检测能力
        • 滑块检测
        相关产品与服务
        验证码
        腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档