2013-06-19 2 views
0

Я хочу извлечь информацию из pdf-файлов.Извлечь продукты и цены из счета-фактуры

Ниже приводится выдержка из политики, в которой формат pdf преобразуется в документ txt с использованием https://github.com/yob/pdf-reader/.

Vehicle Description   2007, PORSCHE, CAYMAN 3.2 

Registration Number   USD-2394     Vin Number   FSDFKJL23123KFAS 


MY COVER DETAILS 

Cover                     USD37.45 

Я хотел бы извлечь, например. Описание транспортного средства и стоимость покрытия:

vehicle.description => "2007, PORSCHE, CAYMAN 3.2" 
vehicle.registration => "USD-2394" 
vehicle.cost_of_cover => "37.45" 

Может кто-нибудь посоветует соответствующий метод. Проблема в том, что макет политики может измениться, но данные будут в основном одинаковыми, просто с разными значениями.

Если regex - это способ пойти, может кто-нибудь просто предоставить пример кода.

+0

Это зависит от того, сколько времени и денег вы готовы потратить, и о том, как непоследовательно ваши данные. Возможно, лучшим решением является использование сервиса, такого как механический турк. Как и сейчас, мы не можем дать хороший ответ на ваш вопрос (см. «Рекомендации по SO» (http://stackoverflow.com/help/asking)). –

+0

Возможный дубликат [Ruby: Чтение файлов PDF] (http://stackoverflow.com/questions/773193/ruby-reading-pdf-files) – phoet

+0

Пробовал ли вы 'PDF :: Reader' https://github.com/ yob/pdf-reader – Casper

ответ

1

найти описание

/Vehicle Description((?!Registration$).*)Registration/m 

найти регистрационный номер

/Registration Number((?!Vin$).*)Vin/m 

Нахождение стоимости покрытия

/Cover(.*)/m 

Это все довольно ленивые регулярные выражения матчи. Однако вы не представили много разных образцов. Но это должно заставить вас начать.

Пример:

match = /Vehicle Description((?!Registration$).*)Registration/m.match(PDFTEXT) 

http://www.ruby-doc.org/core-2.0/Regexp.html

0

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

description = text.scan(/Vehicle Description(.*)Registration/m).flatten[0].strip 
registration = text.scan(/Registration Number(.*)Vin/m).flatten[0].strip 
cover = text.scan(/Cover(.*)/m).flatten[0].strip 
Смежные вопросы