2013-09-11 3 views
1

Мне нужно проанализировать PDF-документ. У меня есть Java-программа для анализа файла PDF. (При анализе PDF я использовал информацию о шрифтах этих абзацев в PDF.I не конвертировать ее в текст, потому что если я конвертировать PDF в текстовый файл я буду сойду шрифт information.so непосредственно я разбор PDF с информацией шрифта с помощью Apache PDFBox. я загрузить PDF-файл, используя следующий кодпроанализировать файл в формате pdf с помощью программы mapreduce в hadoop

String inputFile = "/home/Desktop/CTT/bcreg20130702a.pdf"; 
File input = new File(inputFile); 
pd = PDDocument.load(input); 

Теперь мне нужно для написания программы сокращения карт для разбора PDF-документов. Я не могу напрямую использовать файл PDF в качестве входа в функцию map() в программе mapreduce. Я использовал WholeFileInputFormat для передачи всего документа в виде одного split.but, но он дает мне BytesWritable (значение) и имя файла (ключ).

У меня также есть SequenceFileFormat этого PDF.

Как я могу использовать PDFBox с этим SequenceFileFormat или WholeFileInputFormat? и он также должен сохранять информацию о шрифтах. Без информации о шрифтах я не могу разобрать мой pdf.

ответ

1

Вы сказали, что вы используете свой собственный InputFormat (WholeFileInputFormat) В этом вместо BytesWritable использования PDDocument объекта в качестве значения к карте, и загрузить все содержимое PDF в PDDocument в nextKeyValue() из WholeFileRecordReader (логотипо Читатель). Также убедитесь, что ur isSplitable() возвращает false, чтобы загрузился весь pdf.

-2

Map-Reduce требует ввода пути ввода из HDFS. Таким образом, вы можете загрузить локальный файл в HDFS (используя java API) в какой-либо путь/папку и использовать его в качестве вклада в Map-Reduce.

3

Вы можете создать файл SequenceFile, содержащий файлы PDF. SequenceFile - это формат двоичного файла. Вы можете сделать каждую запись в файле SequenceFile PDF. Для этого вы должны создать класс, полученный из Writable, который будет содержать PDF-файл и любые метаданные, которые вам нужны. Затем вы можете использовать любую библиотеку java PDF, такую ​​как PDFBox, для управления PDF-файлами.