如何使用iOS swift将图像转换为文本?

如何使用iOS swift将图像转换为文本?,ios,swift,ocr,tesseract,swiftocr,Ios,Swift,Ocr,Tesseract,Swiftocr,如何使用iOS swift将图像转换为文本 步骤01:使用iOS摄像头拍照。(使用iOS swift中的UIImagePickerController完成) 第二步:我得到了图像 步骤03:我必须将这些图像(UIImage)转换为文本格式 使用iOS swift 我已经提到了很多链接,因为我们已经有了VNDetextStranglesRequest来识别字符框 但我的目的是如何将图像转换为文本。不是使用iOS swift的矩形框如果需要将图像转换为文字进行OCR,则可以使用以下链接:- OCR没

如何使用iOS swift将图像转换为文本

步骤01:使用iOS摄像头拍照。(使用iOS swift中的UIImagePickerController完成)

第二步:我得到了图像

步骤03:我必须将这些图像(UIImage)转换为文本格式

使用iOS swift

我已经提到了很多链接,因为我们已经有了VNDetextStranglesRequest来识别字符框


但我的目的是如何将图像转换为文本。不是使用iOS swift的矩形框如果需要将图像转换为文字进行OCR,则可以使用以下链接:-

OCR没有内置库,但您可以使用以下链接

1) 开源OCR-Tesseract-完全免费,但精确度较低

此链接将显示如何在iPhone中运行:


2) 商业OCR——高精度、客户支持等,但需要花钱

我想你说的是从图像中提取文本,这个过程叫做cOCR“光学字符识别”

阅读: IOS没有内置的OCR SDK/库

我强烈建议您检查Tesseract,一个由谷歌维护的开源OCR引擎。

你也可以在这里找到完整的swift4文章


还记得在OCR过程之前捕获高质量图片

如果您需要从图像中识别文本,则可以参考以下内容:

1) Tesseract OCR:

2) ABBYY:

3) 谷歌云愿景:


Tesseract OCR更精确,具体取决于图像分辨率、字体、文本颜色等。

使用CoreML的VNDetecatettextRectanglesRequest,您只能在图像中找到可见文本的区域。而且,这还不足以用swift从图像中提取文本

第一步是裁剪图像,您需要裁剪VNTextObservation中每个图像的图像。像

    for textObservation in textObservations {
        guard let rects = textObservation.characterBoxes else {
            continue
        }
        var xMin = CGFloat.greatestFiniteMagnitude
        var xMax: CGFloat = 0
        var yMin = CGFloat.greatestFiniteMagnitude
        var yMax: CGFloat = 0
        for rect in rects {

            xMin = min(xMin, rect.bottomLeft.x)
            xMax = max(xMax, rect.bottomRight.x)
            yMin = min(yMin, rect.bottomRight.y)
            yMax = max(yMax, rect.topRight.y)
        }
       let imageRect = CGRect(x: xMin * size.width, y: yMin * size.height, width: (xMax - xMin) * size.width, height: (yMax - yMin) * size.height)
第二步是将图像发送到图像处理工具,如Opencv等。有一些关于如何与iOS集成的在线教程,如果您想将objective-c header与swift结合使用,可以使用它。

处理完图像后,第三步是Nick提到的,
然后使用tesseract或ABBYY SDK

Tesseract可以免费使用,您可以找到Tesseract 3.03-rc1的iOS框架。关于OCR工具,您需要了解的最重要的事情是语言。你想转换什么语言?检测到的图像使用什么语言?大多数情况下,您在tesseract中获得了多种语言的培训数据。综上所述,工作流程如下:


图像捕获->图像处理->OCR处理除非我误解了,否则你要找的是,你应该做一些关于如何在iOS中实现它的研究。感谢PPL、Ahmed和Matusalem的可能重复。检查此项:感谢Ayman。-(NSString)ocrImage:(UIImage*)UIImage{//code from robertcarlsen.net/2009/12/06/ocr-on-iphone-demo-1043.char text=tess->tesseractrict(imageData,(int)bytes_/u pixel,(int)bytes_/u/u line,0,0,(int)imageSize.height,(int)imageSize.width);//对文本执行一些有用的操作!NSLog(@“转换文本:%@),[NSString stringWithCString:text-encoding:NSUTF8StringEncoding];返回[NSString stringWithCString:text-encoding:NSUTF8StringEncoding];}。我们如何使用tess->TesseractRect SWIFT IOS。感谢Aymen。非常高兴在IOS SWIFT 4最新版本中对此进行归档。感谢帮助。我们是否可以从现有照片中获取文本。例如:我在papper中的wriiten是“Hello Ayman”并拍摄一张照片。使用此existion Hello Ayman照片。我们可以从现有图像中查找文本吗?是的,您可以从现有照片中读取文本。但这取决于很多因素…为什么您没有先尝试。然后尝试修复出现的任何问题。如果您对任何有用的答案进行投票,也会更好。-(NSString)ocrImage:(UIImage*)uiImage{//code from robertcarlsen.net/2009/12/06/ocr-on-iphone-demo-1043.char text=tess->tesseractrict(图像数据,(int)字节/像素,(int)字节/行,0,0,(int)图像大小.高度,(int)图像大小.宽度)//对文本做一些有用的事情!NSLog(@“转换文本:%@”,“NSString stringWithCString:文本编码:NSUTF8StringEncoding]);return[NSString stringWithCString:text encoding:NSUTF8StringEncoding];}。我们如何使用tess->Tesseractrict SWIFT IOS。谢谢Nick。我们可以从现有照片中获取文本吗。例如:我在papper中写下“Hello Nick”并拍摄一张照片。使用这张现有的hello Nick照片。我们可以从现有图像中查找文本吗?使用Tesseract OCR我不确定,但我认为不可能从手写便笺中获取文本。