私はエビの宝石を使用して、コンピュータで生成された 60 ページの PDF レポートを読んでいます。このレポートには、数十人の個人の財務データと人口統計データが含まれています。私が直面している課題は、名前/特別な ID (同じ行) と、各行がスキャンされている間にその人に関連する後続の行をキャプチャできるようにしたいということです。文字列に対して ruby のスキャン メソッドを使用すると、次のように一致する行ごとに財務情報だけを取得できました。
[<invoice no.>, <service type>, <modifier (if any)>, <service_date>, <units>, <amount>]
ID を数行下の財務データに関連付けようとしましたが、ID が変更されるたびに変更されましたが、何も機能しませんでした。私はお尻の後ろ向きにこれについて行っていますか?正規表現に関する私の経験はほとんどありません (および一般的なプログラミング)。
以下は、財務データのみで機能するコードです。
PDF::Reader.new(file).pages.each do |page|
page.raw_content.scan(/^\(\s(\d{6})\s+\d\s+(\w\d{4})\s+(0580|TT|1C|1C\s+1F)?\s+(\d+\/\d+\/\d+)\s+\d+\/\d+\/\d+\s+(\d+\.\d+)\s+(\d+\.\d+)/) do |line|
line.collect {|x| x.strip! if !x.nil?}
print "#{line.join(' ')}\n"
Cycle.check_details(line)
end
end
そして、これが生成するもののサンプルですputs page.raw_content
(これらの行には空の空白がたくさん含まれています)。
(REG LOC CLIENT SERVICE NAME BIRTH DATE RECIPIENT ID PRIOR AUTHORIZATION #)'
(xx xxx xxxxx xxxxxxx LANNISTER, JAIME xx/xx/xxxx xxxx <special ID>)'
(DIAGNOSIS CODES: 887.0)'
( )'
( INV # LINE # PROCEDURE CODE REVENUE CD FROM DT THRU DT UNITS AMOUNT)'
( <inv num> 1 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 2 <service_code> <modifier> xx/xx/13 xx/xx/13 2.50 41.00)'
( <inv num> 3 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 4 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 5 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 6 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 7 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( CLAIM TOTAL
434.60 CLAIM ACCOUNT REF. xxxxxxxxxxxxxxxSUP)'
(REG LOC CLIENT SERVICE NAME BIRTH DATE RECIPIENT ID PRIOR AUTHORIZATION #)'
(xx xxx xxxxx xxxxxxx LANNISTER, JOFFREY xx/xx/xxxx xxxx <special ID>)'
(DIAGNOSIS CODES: 259.0)'
( )'
( INV # LINE # PROCEDURE CODE REVENUE CD FROM DT THRU DT UNITS AMOUNT)'
( <inv num> 1 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 2 <service_code> <modifier> xx/xx/13 xx/xx/13 2.50 41.00)'
( <inv num> 3 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 4 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 5 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 6 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( <inv num> 7 <service_code> <modifier> xx/xx/13 xx/xx/13 4.00 65.60)'
( CLAIM TOTAL
434.60 CLAIM ACCOUNT REF. xxxxxxxxxxxxxxxSUP)'