Po tym, jak zgniatałem z tym przez 3 godziny, udało mi się stworzyć z danych dokument XML z możliwością analizy składni. Niestety, nie udało mi się stworzyć kompletnego zestawu kroków, które można wykorzystać do przyszłych publikacji aukcji.
Odkładając na bok próbowałem zadzwonić do hrabstwa Los Angeles i zapytać, czy może podać alternatywny format nieruchomości na aukcję (program Excel itp.), A odpowiedź brzmi "nie". To rząd dla ciebie.
Oto widok wysokiego poziomu mojego podejścia:
- Konwersja PDF do pliku tekstowego za pomocą Poppler
- użyć wyrażenia regularnego foo oczyścić i tworzenie węzłów XML z danymi
- Użyj narzędzia upiększania/walidatora XML, aby znaleźć błędy i oczyść je.
- Użyj Pythona/ruby, aby dodać węzeł Google Maps Link, i umieść link do mapy oceniającej LA County (http://assessormap.co.la.ca.us/mapping/rolldata.asp?ain=APN-GOES_HERE) i
- Konwersja XML do pliku CSV z Ruby
użyłem http://xmlbeautifier.com/ jak mój XML Beautifier/walidator ponieważ była szybka i dał dokładne raportowanie błędów, łącznie z numerami linii.
Zastosowanie Homebrew zainstalować Poppler dla Mac:
brew install poppler
Po zainstalowaniu Poppler, trzeba mieć dostęp do narzędzia pdftotext do konwersji PDF:
pdftotext -layout -f 24 -l 687 AuctionBook2013.pdf auction_book.txt
Oto podgląd XML (Click here for full XML):
<?xml version="1.0" encoding="UTF-8"?>
<listings>
<item id="1">
<nsb>536</nsb>
<minbid>3,422</minbid>
<apn>2006 003 001</apn>
<delinquent_year>03</delinquent_year>
<apn_old>2006 003 001</apn_old>
<description>LICENSED SURVEYOR'S MAP
AS PER BK 25 PG 28 OF L S LOT 1
BLK 1 ASSESSED TO J AND S
LIMITED LLC C/O DUNA CSARDAS -
JULIUS JANCSO LOCATION COUNTY OF
LOS ANGELES</description>
<address>VACANT LOT</address>
</item>
Edytuj: Dodanie ruby, którą napisałem, aby przekonwertować XML na CSV.
require 'rexml/document'
require 'CSV'
class Auction
def initialize
f = File.new('AuctionBook2013.xml', 'r')
doc = REXML::Document.new(f)
CSV.open("auction.csv", "w+b") do |csv|
csv << ['id', 'minbid', 'apn', 'delinquent_year', 'apn_old', 'description', 'address']
doc.elements.each('/listings/item') do |item|
csv << [item.attributes['id'],
item.elements['minbid'].text,
item.elements['apn'].text,
item.elements['delinquent_year'].text,
item.elements['apn_old'].text,
item.elements['description'].text,
item.elements['address'].text]
end
end
end
end
a = Auction.new()
Link to Final CSV
Moja myśl byłoby użyć pdf konwerter tekstowym, a następnie przetworzyć plik tekstowy (zakładając, że przetwornica daje przewidywalne format wyjściowy). –
Tak, próbowałem. Jest to projekt rubinowy, który wypróbowałem (https://github.com/kitplummer/pdftohtmlr) i wypluł śmieci. – doremi
Co zrobić z tekstem? Wygląda na to, że to HTML. –