以字符串形式阅读pdf的内容

时间:2015-08-02 03:21:58

标签: ios swift pdf

如何在swift中以字符串形式阅读PDF的内容。我想稍后过滤此字符串并从中获取某些文本元素。 PDF来自网址,我将其加载到网页视图中并使用NSURL扩展程序对其进行缓存。如何获取此Web视图并阅读URL的内容。我试过了:

var urlAsString = String(contentsOfURL: NSURL(string: "http://web.shschools.org/shpid/pdfs/WXS5N48Z.pdf")!, encoding: NSUTF8StringEncoding, error: nil)

然而,这不起作用,我假设因为该文件是PDF。我可以得到一些帮助吗?

3 个答案:

答案 0 :(得分:4)

如果你想避免大量的编程,你可能需要使用一些可以帮助你从PDF中提取文本的库。

您有两种选择:

1)使用OCR库。由于PDF可以包含除文本之外的图像,因此执行OCR以获取文本是最通用的解决方案。要对PDF文档执行OCR,您需要convert it to UIImage object。另一种方法可以是将WebView的内容转换为UIImage,但这可能会导致图像分辨率降低,从而影响OCR性能。

使用OCR库的缺点是你不会得到100%准确的文本,因为OCR引擎总是会引入错误。

OCR的最佳选项是Tesseract for iOS(免费,但错误率更高,调整结果更复杂一些)。一个更强大的选项是BlinkOCR,可以免费试用,在商业用途时支付,但你可以从工程师那里获得大量帮助。

2)您也可以使用PDF库。 PDF库可以可靠地提取文档中写入的文本,但文本是PDF内部图像的一部分。因此,根据您想要阅读的文档,这可能是一个更好的选择(或不是)。

可以找到PDF库的一些选项here,根据我们的经验,PDFlib可以提供非常好的结果并且是最可定制的。

答案 1 :(得分:1)

PDF可以是各种各样的东西,它可以显示文本但实际上不包含任何可以解析的文本。 (想想传真到电子邮件服务)。

一个想法是从Web视图中创建一个图像上下文,然后将其发送到OCR框架以进行字符识别。 (这是一个OCR教程:http://www.raywenderlich.com/93276/implementing-tesseract-ocr-ios

答案 2 :(得分:-1)

要从文本中获取任何元素,您可以使用此功能

func parser (textToParse:String, strFrom:String, strTo:String) -> String {
        return textToParse.componentsSeparatedByString(strFrom)[1].componentsSeparatedByString(strTo)[0]
    }

var s=parser("abc", strFrom: "a", strTo: "c")
//s will be "b"