iOS Swift 拍照识别数字(Recognizing Text in Images)
可以用腾讯云
OCR的iOS demo - 腾讯云
苹果官方的解决方案(识别度太低)
Recognizing Text in Images - apple developer
Extracting phone numbers from text in images(Sample Code) - apple developer
import UIKit
import Visionclass ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {@IBOutlet weak var resLabel: UILabel!@IBAction func recognizeAssetsImage(_ sender: Any) {recognizeText(in: #imageLiteral(resourceName: "image_sample"))}// 按钮点击,打开相册@IBAction func selectImage(_ sender: UIButton) {let imagePickerController = UIImagePickerController()imagePickerController.delegate = selfpresent(imagePickerController, animated: true, completion: nil)}// 选择图片完成后的回调func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {picker.dismiss(animated: true, completion: nil)// 获取选择的图片guard let selectedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage else {return}let resImage = binarize(image: selectedImage)!// 识别图片中的文本recognizeText(in: resImage)}func binarize(image: UIImage, threshold: CGFloat = 0.5) -> UIImage? {guard let cgImage = image.cgImage else { return nil }let width = cgImage.widthlet height = cgImage.heightlet colorSpace = CGColorSpaceCreateDeviceGray()var pixels = [UInt8](repeating: 0, count: width * height)guard let context = CGContext(data: &pixels, width: width, height: height, bitsPerComponent: 8, bytesPerRow: width, space: colorSpace, bitmapInfo: CGImageAlphaInfo.none.rawValue) else { return nil }context.draw(cgImage, in: CGRect(x: 0, y: 0, width: width, height: height))for i in 0 ..< pixels.count {pixels[i] = pixels[i] < UInt8(threshold * 255) ? 0 : 255}guard let binarizedCgImage = context.makeImage() else { return nil }return UIImage(cgImage: binarizedCgImage)}func recognizeText(in image: UIImage) {// 将 UIImage 转换为 CGImageguard let cgImage = image.cgImage else { return }// 创建处理请求的处理器let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])// 创建 VNRecognizeTextRequestlet request = VNRecognizeTextRequest { (request, error) inif let error = error {print("Text recognition error: \(error)")return}// 处理识别结果guard let observations = request.results as? [VNRecognizedTextObservation] else { return }for observation in observations {// 获取识别到的文本guard let topCandidate = observation.topCandidates(1).first else { continue }print("Recognized text: \(topCandidate.string)")self.resLabel.text = topCandidate.string}}// 设置识别级别request.recognitionLevel = .accurate// 执行请求do {try handler.perform([request])} catch {print("Failed to perform text recognition: \(error)")}}
}
前期尝试过的解决方案(没有试成功过)
TesseractOCRiOS - github(最后一次提交2020.2)
SwiftyTesseract - github(最后一次提交2022.4)
相关文章:
iOS Swift 拍照识别数字(Recognizing Text in Images)
可以用腾讯云 OCR的iOS demo - 腾讯云 苹果官方的解决方案(识别度太低) Recognizing Text in Images - apple developer Extracting phone numbers from text in images(Sample Code) - apple developer import UIKit import Visionclass ViewContro…...
数学建模:智能优化算法及其python实现
数学建模:智能优化算法及其python实现 智能优化算法简介差分进化算法(Differential Evolution,DE)遗传算法(Genetic Algorithm,GA)粒子群优化算法(Particle Swarm Optimization,PSO)模拟退火算法(Simulated Annealing,SA)蚁群算法(Ant Colony Optimization,ACO)…...
monkeyrunner环境搭建和初步用法
一、打开模拟器 运行monkeyrunner之前必须先运行相应的模拟器,不然monkeyrunner无法连接设备。 用Elipse打开Android模拟器或在CMD中用Android命令打开模拟器。这里重点讲一下在CMD中用Android命令打开模拟器 命令:emulator -avd test (注…...
2024华为校招面试真题汇总及其解答(一)
1. 我问你点java基础的问题吧,你平时都用什么集合啊,都什么情况下使用 在 Java 中,常用的集合有以下几种: List:有序集合,可以重复,常用实现类有 ArrayList、LinkedList、Vector。Set:无序集合,不能重复,常用实现类有 HashSet、TreeSet。Map:键值对集合,键不能重复…...
css调整字体间距 以及让倾斜字体
调整字体间距 .element {letter-spacing: 2px; /* 调整为适当的值 */ }倾斜字体1 .element {font-style: italic; }请注意,不是所有的字体都有斜体样式可用。如果字体本身没有斜体版本,则可能无法实现完全的斜体效果。 倾斜字体2 <span class"…...
工具篇 | Gradle入门与使用指南 - 附Github仓库地址
介绍 1.1 什么是Gradle? Gradle是一个开源构建自动化工具,专为大型项目设计。它基于DSL(领域特定语言)编写,该语言是用Groovy编写的,使得构建脚本更加简洁和强大。Gradle不仅可以构建Java应用程序&#x…...
使用 Python 函数callable和isinstance的意义
一、说明 在这篇博客中,我们将探讨两个python函数:1 callable 中的函数及其有趣的应用程序。该callable函数用于检查对象是否可调用,这意味着它可以作为函数调用。2 isinstance这个内置函数允许我们比较两种不同的数据类型并确定它们是否相…...
Netty场景及其原理
Netty场景及其原理 Netty简化Java NIO的类库的使用,包括Selector、 ServerSocketChannel、 SocketChannel、ByteBuffer,解决了断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等。Netty拥有高性能、 吞吐量更高,延迟更低…...
Java接口和接口继承
Java接口和接口继承 接口 在抽象类中,抽象方法本质上是定义接口规范,即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。 如果一个抽象类没有字段,所有方法全部都是抽象方…...
2023 年解锁网络安全即服务
在当今快速发展的数字世界中,强大的网络安全机制的重要性怎么强调都不为过。对于越来越多地发现自己成为网络威胁焦点的小型企业来说尤其如此。 那么,“网络安全即服务”到底是什么?为什么它对小型企业至关重要? 网络安全即服务…...
python基于轻量级卷积神经网络模型GhostNet开发构建养殖场景下生猪行为识别系统
养殖业的数字化和智能化是一个综合应用了互联网、物联网、人工智能、大数据、云计算、区块链等数字技术的过程,旨在提高养殖效率、提升产品质量以及促进产业升级。在这个过程中,养殖生猪的数字化智能化可以识别并管理猪的行为。通过数字化智能化系统&…...
Selenium自动化测试 —— 通过cookie绕过验证码的操作!
验证码的处理 对于web应用,很多地方比如登录、发帖都需要输入验证码,类型也多种多样;登录/核心操作过程中,系统会产生随机的验证码图片,进行验证才能进行后续操作 解决验证码的方法如下: 1、开发做个万能…...
链表(单链表、双链表)
前言:链表是算法中比较难理解的部分,本博客记录单链表、双链表学习,理解节点和指针的使用,主要内容包括:使用python创建链表、实现链表常见的操作。 目录 单链表 双链表 单链表 引入链表的背景: 先来看…...
面试题08.05.递归算法
递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。 示例1: 输入:A 1, B 10输出:10示例2: 输入:A 3, B 4输出:12提示: 保证乘法…...
分布式IT监控系统
公司的IT系统越来越复杂,对运维和维护服务的需求也越来越高。在这种环境下,分布式IT监控系统应运而生。它逐渐成为公司提高运营效率、保证业务高效运营的关键工具,功能强大,性能优良。 分布式IT监控系统是什么? 分布…...
Redis 是什么?
Redis是一种基于内存的数据库,数据的读写都是在内存中完成的,因此读写速度非常的快,常用于缓存,消息队列,分布式锁等场景。 Redis 在高并发项目中,担任着非常重要的作用,扛高并发的,…...
本地源制作
title: 本地源制作 createTime: 2020-10-29 18:05:52 updateTime: 2020-10-29 18:05:52 categories: linuxyum tags: 制作本地源 通过 createrepo 制作本地源 前提 : 前提制作本地源的机器可以安装 这个软件例如 下载nginx的时候 自己加上 nginx的yum的数据源 (rp…...
树莓派(Linux系统通用)交叉编译(环境搭建、简单使用)
概念 交叉编译是指在一台计算机上编译运行在另一台计算机上的程序。(编译是指,在一个平台上生成在该平台上的可执行程序)通常情况下,编译器和目标平台的架构是不同的,例如,在一台x86平台上编译运行在ARM平…...
uniapp - 微信小程序实现腾讯地图位置标点展示,将指定地点进行标记选点并以一个图片图标展示出来(详细示例源码,一键复制开箱即用)
效果图 在uniapp微信小程序平台端开发,简单快速的实现在地图上进行位置标点功能,使用腾讯地图并进行标点创建和设置(可以自定义标记点的图片)。 你只需要复制代码,改个标记图标和位置即可。...
网络安全--IDS--入侵检测
1. 什么是IDS? IDS---入侵检测是防火墙的一个有力补充,形成防御闭环,可以及时、准确、全面的发现入侵弥补防火墙对应用层检查的缺失。对系统的运行状态进行监视,发现各种攻击企图、过程、结果,来保证系统资源的安全&a…...
城通网盘解析工具终极指南:免费获取高速直连下载地址
城通网盘解析工具终极指南:免费获取高速直连下载地址 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否厌倦了城通网盘那令人抓狂的下载速度?每次下载文件都要面对漫长的等待…...
δ - mem:提升大型语言模型内存效率,得分最高可达 1.31 倍!
快速通道可了解 arXiv 成为独立非营利组织的情况,也能直达康奈尔大学官网。同时,还能通过链接进行捐赠,支持 arXiv 的发展。搜索与导航提供了多种搜索途径,可在所有字段(标题、作者、摘要等)进行搜索。还有…...
终极Python通达信数据解析方案:mootdx完整使用指南与金融量化实践
终极Python通达信数据解析方案:mootdx完整使用指南与金融量化实践 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在金融数据分析和量化交易领域,通达信作为国内主流的证券…...
药物发现自动化:FEP计算工作流引擎faah的设计原理与实战
1. 项目概述:一个面向药物发现的自动化工作流引擎 最近在药物研发的自动化工具领域,一个名为 kiron0/faah 的项目引起了我的注意。这并非一个简单的脚本集合,而是一个设计精巧、旨在为药物发现中的自由能微扰计算提供端到端自动化解决方案的…...
天学网口碑好不好?2026年最新用户实测反馈给你答案
作为深耕教育数字化落地领域5年的从业者,最近后台收到不少公立校电教组老师、学生家长的提问:主打AI英语教学的天学网口碑到底怎么样?刚好我们团队刚做完2026年第一季度的英语教育数字化工具落地效果调研,结合一手实测数据给大家客…...
基于BLE HID与旋转编码器打造双模式无线遥控器
1. 项目概述你有没有过这样的时刻:窝在沙发里看剧,想调个音量或者暂停一下,却不得不伸手去够茶几上的键盘或鼠标,打断那份沉浸的惬意?或者,在电脑上回味一些经典老游戏时,觉得用键盘移动、鼠标射…...
TPU材料3D打印iPad Pro保护框:从设计到成品的完整实践指南
1. 项目概述:为什么选择TPU为iPad Pro打造专属保护框?作为一名折腾过几十公斤耗材的3D打印老玩家,我始终认为,这项技术最迷人的地方不在于复刻网上的模型,而在于为手头的心爱之物量身定制解决方案。就拿我手边的这台iP…...
构建高质量Awesome清单:开源项目精选与维护实践指南
1. 项目概述:为什么我们需要一个“Awesome”清单?在开源的世界里,信息过载是每个开发者、技术爱好者乃至项目经理都面临的共同挑战。每天,GitHub、GitLab等平台上都会涌现出成千上万个新项目,从精巧的工具库到庞大的系…...
【2026最新】鸿蒙NEXT数据持久化实战:培训班管理系统数据存储全攻略
鸿蒙开发中数据总是丢失?本地存储和网络请求搞不定?本文用15分钟带你彻底搞懂Preferences、RDB、HTTP三大数据持久化方案,附完整培训班管理系统实战代码和踩坑记录,让你的鸿蒙App数据存储从此安全可靠!一、学员信息本地…...
降AI率软件越便宜越好吗?实测5个主流降AI工具,首选嘎嘎降!
一、前言:2026 年毕业必须通过 aigc 检测 2026 年各高校对学术论文的 AIGC 疑似度的审查全面变严, 均发布了具体 AIGC 检测报告和数值要求,211 和 985 高校规定本科论文 AI 率要低于 20%, 硕士要求 AI 率不高于 15%。普通高校一般要求 AI 率控制在 30% 以内。AIGC 检测率超标的…...
