从发票中提取产品和价格

时间:2013-06-19 21:51:46

标签: ruby-on-rails ruby regex pdf

我想从pdfs中提取信息。

以下是政策摘录,其中使用https://github.com/yob/pdf-reader/将pdf转换为txt文档。

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"

任何人都可以告知适当的方法。问题在于策略的布局可能会发生变化,但数据大致相同,只是具有不同的值。

如果要使用正则表达式,任何人都可以提供示例代码。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用正则表达式(regexp)可以非常轻松地完成此操作。假设您的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