2015-08-02 6 views
0

Как я могу прочитать содержимое PDF в виде строки в swift. Я хочу позже фильтровать эту строку и получать от нее определенные текстовые элементы. PDF-файл написан с URL-адреса, и я загружаю его в веб-представление и кеширую его с помощью расширения NSURL. Как я могу взять этот веб-просмотр и прочитать содержимое URL-адреса. Я пробовал:Прочитать содержимое pdf как строку

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

Однако, это не сработало, я предполагаю, что файл является PDF. Могу ли я получить помощь?

+0

Вам нужно будет загрузить PDF в виде NSData, затем проанализировать данные как-то –

+0

Как я могу загрузить его как NSData? – modesitt

+0

... = NSData (contentsOfURL :) // https://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/index.html#//apple_ref/occ/ instm/NSData/initWithContentsOfURL: –

ответ

4

Если вы хотите, чтобы избежать большого количества программ, вы, вероятно, необходимо использовать некоторые библиотеки, которая поможет вы извлекаете текст из PDF-файлов.

У вас есть два варианта:

1) Использование OCR библиотека. Поскольку PDF может содержать изображения, кроме текста, выполнение OCR для получения текста является наиболее общим решением. Чтобы выполнить OCR в PDF-документе, вам необходимо указать convert it to UIImage object. Другим подходом может быть преобразование содержимого WebView в UIImage, но это может привести к тому, что изображение с более низким разрешением может повлиять на производительность OCR.

Недостатком использования библиотеки OCR является то, что вы не получите 100% точного текста, так как движок OCR всегда вводит ошибки.

Лучшие варианты OCR: Tesseract for iOS (бесплатно, но с более высокой частотой ошибок и немного сложнее настроить для получения результатов). Более надежный вариант - BlinkOCR, который можно попробовать, заплатив, когда он используется в коммерческих целях, но вы можете получить тонну помощи от своих инженеров.

2) Вы также можете использовать библиотеку PDF. Библиотеки PDF могут надежно извлекать текст, написанный в документе, за исключением текста, который является частью изображений внутри PDF. Поэтому в зависимости от документов, которые вы хотите прочитать, это может быть лучшим вариантом (или нет).

Некоторые варианты библиотек PDF можно найти here, и по нашему опыту PDFlib дает очень хорошие результаты и является самым настраиваемым.

1

PDF может быть разнообразным, он может отображать текст, но на самом деле не содержать текст, который может быть проанализирован. (подумайте о факсимильном сообщении).

Одной из идей было бы создать контекст изображения из веб-представления, а затем отправить его в OCR-структуру для распознавания символов. (Вот OCR учебник: http://www.raywenderlich.com/93276/implementing-tesseract-ocr-ios)

+0

Как вы можете преобразовать этот веб-образ в изображение? – modesitt

+0

Вам нужно будет начать с этого ответа: http://stackoverflow.com/a/20795651/4096655 - прочитайте ответы на оба вопроса, поскольку у вас появятся некоторые решения. (Прокрутка всего вида, изменение размера и т. Д.) –

-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" 
Смежные вопросы