Поиск строки в PDF-файлах - PullRequest
       14

Поиск строки в PDF-файлах

5 голосов
/ 12 февраля 2011

Я работаю над школьным проектом, в котором есть несколько файлов PDF.Должен быть функционал поиска по имени, который я просто набираю в имени студента, и все pdf файлы с его / ее именем должны открываться.Каков наилучший способ сделать это?Я искал решения в сети, и все, что я придумаю, это iTextSharp, и это делает его еще более запутанным.

Возможно ли это?Может быть, кто-то может дать мне ссылку на учебник, или что-то.:) Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 01 сентября 2011

Используйте iTextSharp. Это бесплатно и вам нужен только "itextsharp.dll".

http://sourceforge.net/projects/itextsharp/

Вот простая функция для чтения текста из PDF.

Public Shared Function GetTextFromPDF(PdfFileName As String) As String
    Dim oReader As New iTextSharp.text.pdf.PdfReader(PdfFileName)

    Dim sOut = ""

    For i = 1 To oReader.NumberOfPages
        Dim its As New iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy

        sOut &= iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(oReader, i, its)
    Next

    Return sOut
End Function

Теперь вы можете легко просматривать эти файлы.

3 голосов
/ 12 февраля 2011

PDF - это очень сложная спецификация, и можно создать так много вариантов, которые невозможно надежно проанализировать, если вы не используете те же инструменты для чтения, которые использовались для его создания (и часто даже тогда). Существует несколько инструментов, которые сглаживают PDF в текстовую строку (например, pdf2text), и их можно искать, но это ненадежно.

Многие инструменты PDF реализуют только некоторые спецификации. Некоторые люди предполагают, что лучший способ поиска в PDF - это уменьшить изображение, а затем распознать его.

2 голосов
/ 12 февраля 2011

Я думаю, что ваша задача может быть разделена следующим образом:

  • Построить индекс файлов PDF
  • Напишите некоторый код, который будет использовать индекс для поиска релевантного PDF при каждом поиске
  • Напишите некоторый код, который откроет найденный PDF или покажет предупреждение, если ничего не было найдено

Для построения индекса вы можете использовать какое-то интегрированное решение, например Apache Lucene или Lucene.Net или преобразуйте каждый PDF-файл в текст и самостоятельно создайте индекс из текста.

Другие два шага довольно тривиальны и зависят от языка / технологии, использованной на первом шаге.

Ваш вопрос помечен как связанный с .NET, поэтому вы можете попробовать Библиотека Docotic.Pdf для построения индекса (отказ от ответственности: я работаю на Bit Miracle).

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

...