Slik trekker du data fra tabeller i PDF-filer med Tabula og OpenRefine

Det er tonnevis med data der ute, låst i tabeller som er innebygd i PDF-essays og rapporter. PDF-filer er allestedsnærværende, men det er vanskeligere å bruke dataene i dem, enn det ville være i et regneark. Selv om du kan trekke ut dataene, kan det være vanskelig å få konsistente resultater. Én tabell kunne ha linjer for å peke ut cellegrensene, mens andre bare kunne ha hvite mellomrom for å oppnå en tabellvisning. De kan også variere når det gjelder å inneholde spenner og / eller kolonner, og ofte er den eneste konstanten at de alle har data du vil trekke ut.

Mens du manuelt kan trekke ut data fra et bord i en PDF, er det langt fra enkelt. Det er ingen grunn til å ta så mye tid når det er verktøy for å gjøre jobben enklere. I denne veiledningen vil jeg vise deg hvordan du enkelt kan pakke ut tabellen fra PDF-filen med Tabula, og deretter rydde de rotete dataene til en mer brukbar form med OpenRefine.

Hvorfor Tabula?

Alle som jobber med data kjenner et vanlig problem: du fant noen interessante data for journalistikkprosjektet eller statistikken for å lage et fint kart, men dataene blir rotete og fanget i en PDF-fil, ikke automatisk lesbar av programmet. Så, enten må du skrive ut eller utføre en langvarig prosess med kopiere og legge inn rader med data ut av PDF-fil i Excel. Denne typen manuell arbeid skaper friksjon, og etter hvert mister du mye tid.

Å være en forskerutdannet, har gått gjennom denne smerten ved å manuelt kopiere og lime bord til avhandlingen min. Jeg har alltid drømt om et program som kan trekke ut bordet fra PDF med enkelt klikk - og det er akkurat hva Tabula er. Det er en gratis, Java-drevet app som kjører i et webgrensesnitt på datamaskinen din som kan trekke ut data fra nesten hvilket som helst bord i en PDF. Om sekunder kan det trekke ut dataene som tar deg tid til å skrive ut manuelt.

Hvordan bruke Tabula?

Først av, last ned den tilsvarende zip-filen for datamaskinen din fra Tabula nettsted og pakke dem ut til en mappe etter eget valg. Pass på at du har Java v6 eller 7 installert også; Hvis ikke, kan du laste den ned gratis fra Oracle-nettstedet. Den linken er til annonsen / verktøylinjen-fri versjon, så du trenger ikke å bekymre deg for alt annet som blir installert.

Når du starter Tabula, vil du først se et kommandovindu og innen få sekunder skal nettleseren din automatisk åpne for http://127.0.0.1:8080. Hvis ikke, åpne nettleseren din og skriv denne nettadressen i adressefeltet. Sende inn PDF-filen din og Tabula vil behandle filen din og vise deg en fin liste over sideminiatyrene. Se etter tabellen du vil pakke ut, eller hvis du har en liten PDF, kan du sjekke alternativet til "Auto-Detect Tables".

Hjemmeskjerm av Tabula viser sideminiatyrer og tabellen du vil trekke ut

Klikk og dra for å velge området i tabellen. Når du har slettet musen, vil Tabula vise deg det ekstraherte bordet i et vennlig format. Hvis dataene er uklar, kan du prøve å fjerne overskriftene eller fotnoten og mer. Til slutt kan du enten laste ned det ekstraherte tabellen som kommaseparerte verdier (CSV) eller tabseparerte verdier (TSV) eller kopiere dataene til utklippstavlen. Når dataene er i regnearket, må du kanskje gjøre litt redigering, for eksempel å korrigere topptekstene eller fotnoter.

Utdraget tabell fra PDF med Tabula

Når du må stenge Tabula i Windows, bytt til kommandofeltet og trykk Kontroll-C. Vent til det er en melding som sier at nedleggelsen er fullført. Det vinduet kan lukkes automatisk, eller lukke det selv. I Mac, bytt til appen (høyreklikk ikonet i dokken) og trykk CMD-Q. Hvis du kjører Mac OS X 10.8 eller nyere, må du sørge for å justere Gatekeeper-innstillingene for å unngå feilmeldinger under installasjonen.

Tabula vil ikke være perfekt hele tiden, og det er fortsatt noen problemer å sortere ut. Fra nå av fungerer det kun på tekstbasert PDF, slik at du sitter fast med manuelt arbeid hvis du har skannet PDF-filer. Men hvis du har en kopi av Acrobat, kan du kanskje konvertere bilde PDF-filer til en redigerbar PDF som vil jobbe med Tabula. Også, hvis du har PDF-filer med flere linjer, vil Tabula rapportere hyppige feil i tabeller uten grafiske radseparatorer, så vær sikker på å passe på det.

Hvorfor OpenRefine?

Av og til feilstaving, ekstra plass, tilfeldig tegnsetting, merkelig kapitalisering, duplikatopptak og mer er parret kurset når du utvinner data fra PDF-filer. Uansett hvor fint utdraget ser ved første øyekast, vil dataene dine bli et rot hvis det er noen feil, skaper problemer med datainnhenting, interoperabilitet og indeksering.

Det er her OpenRefine (tidligere Google Refine) kommer inn. Det er et annet gratis verktøy som hjelper deg med å enkelt identifisere disse feilene og data unøyaktigheter. OpenRefine gjør det ikke bare mulig å raskt diagnostisere nøyaktigheten av dataene dine, men også handle på visse feil på en automatisk måte. Det kan transformere data på tvers av mange eksisterende celler i bulk. For å rydde opp dataene, kan det utvides med flere data fra andre kilder, og konvertere det til andre formater, slik at du kan bruke det i appene du vil ha.

Slik bruker du OpenRefine?

OpenRefine har igjen et webgrensesnitt, kjører på datamaskinen, og krever Java. Den eneste forskjellen er denne gangen, den åpnes i nettleseren din på http://127.0.0.1:3333.

Når du åpner OpenRefine, kan du legge merke til tre alternativer på venstre side: Opprett prosjekt der du kan importere data enten fra datamaskin, webadresse, utklippstavle eller Google regneark Åpne prosjekt som hjelper deg med å gå tilbake til et eksisterende prosjekt opprettet under en tidligere økt; og Import prosjekt som tillater oss å importere et eksisterende OpenRefine-prosjektarkiv direkte. OpenRefine forstår en rekke data filformater, inkludert TSV, CSV, Excel-dokumenter, og til og med XML og JSON-en favoritt for web- og applikasjonsutviklere.

Hjemmeskjerm av OpenRefine

Bla til din eksporterte CSV-fil og klikk neste. På neste skjerm får du oversikt over datasettet som det vil vises i OpenRefine. Som standard blir førstelinjen parset som navnet på en kolonne. Et annet alternativ er å merke av i boksen "Tilbudsmerker brukes til å legge til celler som inneholder kolonneparatorer". Hvis du lar den være valgt, må du kontrollere at alle celleverdiene faktisk er vedlagt i sitater i den opprinnelige filen. Ellers fjerner du denne boksen for å sikre at anførselstegnene ikke misforstås av OpenRefine.

De andre alternativene kan komme til nytte i noen tilfeller; Prøv å velge og avmarkere dem for å se hvordan de påvirker dataene dine. Legg merke til hvordan forhåndsvisningen oppdateres for å reflektere disse endringene. Sørg også for å velge riktig koding for å unngå at spesialtegn blir blandet opp. Når alt ser riktig ut, gi prosjektet ditt navn og klikk Opprett prosjekt.

Datasett lastet i OpenRefine

For å demonstrere ulike datamanipulasjonsteknikker kan du enten bruke ditt eget datasett eller laste ned et demo datasett fra Github-depotet for å prøve deg selv. Når datasettet ditt er lastet inn i OpenRefine, bør du lære å utforske data ved å skanne de forskjellige sonene. Fra topp til bunn kan du observere fire soner.

I den første sonen kan du se totalt antall rader for en bestemt fil. I den andre sonen kan du prøve å skifte mellom rader og poster ved å klikke på begge ord. Denne sonen lar deg også velge om du vil vise 5, 10 eller 50 rader / poster på en side, og gir også den riktige måten å navigere fra side til side. I den tredje sonen finner du her den første raden som ble analysert som kolonneoverskrift når prosjektet ble opprettet. I min datasett leser kolonnene universitet, legat, numFaculty og så videre. Den venstre kolonnen kalles alltid Alle og er delt inn i tre underkolonner som inneholder stjerner, flagg og ID. Hver kolonne har en meny som kan nås ved å klikke på den lille rullegardin trekant. Endelig viser den fjerde sonen det faktiske hovedområdet som viser de faktiske verdiene til cellene. Hvis du holder musen over en celle, kan du redigere den aktuelle datatypen.

Ulike områder av OpenRefine

Kolonner er en viktig del av OpenRefine, og som standard blir alle kolonnene utvidet, noe som kan være tungvint hvis det er mange kolonner i prosjektet. Hvis du vil midlertidig gjemme en flere kolonner for å legge til rette for arbeidet med de andre, klikker du på det lille rullegardin trekant i hvilken som helst kolonne for å vise menyen og velg Utsikt. Du kan se fire alternativer her: Skjul denne kolonnen, Skjul alle andre kolonner, Skjul kolonner til venstre og Skjul kolonner til høyre.

Spill med de enkelte kolonnealternativene til du er fornøyd med resultatet. For å utvide en kolonne igjen, klikk bare på den. I noen tilfeller kan det være nyttig å endre rekkefølgen på kolonnene, for eksempel å samle kolonner som må sammenlignes. For å oppnå dette, skriv inn menyen i en hvilken som helst kolonne og klikk Rediger kolonne. Igjen er det fire alternativer: Flytt kolonne til begynnelse, Flytt kolonne til slutt, Flytt kolonne til venstre og Flytt kolonne til høyre. Hvis du vil ombestille kolonnene helt, bruker du kolonnen som heter Alle

De Utsikt alternativet her gir deg en rask måte å utvide eller kollapse alle kolonner, mens Rediger kolonne gir deg en rask måte å re-arrangere kolonner ved å dra dem rundt eller undertrykke dem ved å slippe dem til høyre, som vist i følgende skjermbilde.

Kolonner re-arrangementer i OpenRefine

Når prosjektet ditt er stort, er det første du bør lære å sortere data som et visuelt hjelpemiddel, siden sortering kan gjøre datasettet lettere å utforske og manipulere. For å sortere dataene dine ved deres universitet navn, velg Sortere i kolonnemenyen for å få tilgang til følgende skjerm. Ser på skjermbildet, kan du sortere celleverdier etter type: tekst, tall, datoer og booleaner, og for hver type kan de sorteres i forskjellige rekkefølge.

For eksempel kan tekst sorteres enten i alfabetisk (a til z) eller reversert alfabetisk (z til a), booleans falsk så sann eller omvendt og så videre. Videre kan vi spesifisere hvor feil og blanke lagres i forhold til gyldige verdier ved å dra dem i ønsket rekkefølge. For eksempel kan feilene sorteres først for å finne dem lettere, etterfulgt av gyldige verdier i mellom- og blankverdier på slutten.

Sortering av data i OpenRefine

Et av verktøyene i OpenRefine som du vil bruke oftest er face. Vanligvis lager du en fasett på en bestemt kolonne. Facetet oppsummerer cellene i den kolonnen for å gi deg et stort bilde av dataene dine i sidepanelet, samtidig som du kan filtrere data til noen delsett av rader som du vil endre i bulk. Det finnes ulike måter å faset data på og avhengig av datasettverdier og dine behov de er: tekstfacetter for strenger, numeriske fasetter for tall og datoer og tilpassede fasetter for å definere din egen tekst og numeriske fasetter.

Tekstfacet er et veldig nyttig verktøy, som ligner på filter i et regneark. Tekstfasettgrupper Unike tekstverdier i grupper. Dette kan hjelpe oss med å slå sammen informasjon og vi kan se verdier, som kan staves på mange forskjellige måter. Nå skal vi lage en tekstfacet på land kolonne ved å klikke på rullegardinmenyen i kolonnen og velg Facet → Tekstfasett.

Resultatet av denne fasetten vises i Facet / Filter-fanen til venstre på skjermen. I følgende skjermbilde kan vi se kolonnen land gruppert etter navnene, men jeg fant noen merkelige oppføringer som "USA," "USA" og "USA", sammen med de merkelige "USA"). Er de ikke alle samme?

Tekstfasett i OpenRefine

Du kan manuelt redigere disse uoverensstemmelsene, men du trenger ikke. Valget Cluster vil hjelpe deg med å finne denne typen skitne data enkelt og fikse dem. Klikk på land kolonne dropdown og navigere til Rediger celler → Klynge og Rediger, OpenRefine vil da presentere deg en dialogboks hvor du kan velge forskjellige clustering Methods, som hver kan bruke forskjellige Keying funksjoner.

I Verdier i Cluster, Du kan se de ulike stavemåten og hvor mange rader som inneholder en bestemt stavemåte. De Slå sammen? kolonnen inneholder en avkrysningsboks, og hvis du sjekker det, vil alle verdier i den klyngen bli endret til verdien i Ny celleverdi kolonne. Her kan jeg manuelt taste inn den nye celleverdien som "USA", og deretter kan du klikke Merge valgt og Lukk knappen for å slå sammen alle de valgte klyngene.

Du kan finne noen flere uoverensstemmelser i datasettet; Hvis ja, velg forskjellig Metode fra rullegardinmenyen og velg forskjellig Nøkkelfunksjoner. Spill med forskjellige alternativer til du løser alle inkonsekvensene. Hvis du vil grave inn i hvordan OpenRefine clustering fungerer, må du sjekke denne artikkelen i Github.

Clustering i OpenRefine

Når en tekstfasettgruppe unngår unikt tekst i grupper, blir tallene for numeriske fasetgrupper i numerisk rekkevidde lagret. Vi må rydde dataene for antall studenter i numStudents kolonne. Ikke alle verdiene er numeriske, og mange av dem kan inneholde biter av tekst i tillegg til det faktiske antallet av studentene. For å finne ut hvilke oppføringer som må løses, vil jeg bruke en numerisk fasett.

I numStudents kolonne meny, naviger til Facet → Numerisk fasett og se på hva som vises i Fasett / Filter fanen til venstre. Dette viser oss et histogram av verdiene, og viser også antall oppføringer per type (numerisk, ikke-numerisk, tom, feil), holde et vekk på ikke-numeriske rader og fjern merket for de andre typene. Vi kan se noen problemer allerede, som noen celler har "tekst i tillegg til tall" og forskjellige andre uoverensstemmelser. Så den numeriske kolonnen i korthet er ikke rent numerisk og inneholder noen skitne data.

Vi kan gjøre to ting her: bruk tekstfacetten til å liste all "tekst i tillegg til tall" i venstre sidefelt, og svev musen over noen rotete data, og du får se et alternativ som heter redigere, en dialogboks åpnes, og deretter fjerner du teksten med Backspace og klikker Søke om. I datasettet fjernet jeg "Great Valley" -teksten fra 560 rader med ett enkelt klikk.

Numerisk fasett i OpenRefine

Fasetter er definitivt kraftige verktøy, men noen ganger kan du se inkonsekvenser i cellekolonnen, og den eneste måten å redigere celler i en kolonne på er å påkalle Felles omforming kommandoen på den kolonnen; fra kolonnens rullegardinvalg Rediger celler → Felles transformasjon kommando. Du vil se at det finnes en rekke nyttige funksjoner her for å rydde opp dataene dine og sørge for at det er konsistent. Her er hvorfor: Noen ganger i ferd med å skrive inn data, plasserer folk en plass før eller etter et navn. Du vil ikke kunne se det, men når det gjelder å kombinere to sett med data, vil regnearkprogramvaren tolke den som to sett med data. For eksempel er "Rahul" forskjellig fra "Rahul".

Gå til kolonnen der du vil fjerne hvitt plass, og naviger deretter til Rediger celler → Vanlig transformasjon → Trim ledende og bakre hvitt plass. Et annet vanlig problem med data er inkonsekvent formatering - noen ganger vil noen legge igjen låsene på eller glemme å kapitalisere et navn. Disse tre alternativene: å titlesere, til store versjoner, til små bokstaver konverterer alle cellene i den kolonnen for å bli konsekvent formatert på en eller annen måte.

Felles forvandling i OpenRefine

En svært nyttig funksjon i OpenRefine er håndteringen av historien til alle modifikasjoner som påvirket dataene siden opprettelsen av prosjektet. I praksis betyr dette at du aldri bør være redd for å prøve ut ting med datasettet. Ta gjerne tid til å fla med dataene dine og bruk et hvilket som helst antall fasetter eller transformasjoner fordi du alltid kan angre det hvis du skjønner at det var en feil

 For å få tilgang til prosjektloggen, klikk på Angre gjør om fanen øverst til venstre på skjermen, like ved siden av Filter / Fasett, som vist på skjermbildet. For å skru tilbake klokken, klikk på det siste trinnet du vil opprettholde og hvile vil bli gråtonet ut. For å avbryte alle endringer og gjenopprette dataene som de var før noen transformasjon ble gjort, klikk på 0. Opprett prosjekt. For å gjenopprette, klikk på trinnet du vil gjenopprette historien til.

Prosjekthistorie i OpenRefine

Når du er ferdig med prosjektet, kan du eksportere dataene fra et eksisterende OpenRefine-prosjekt. De Eksport Menyen øverst til høyre på skjermen lar deg gjøre det. De støttede formatene er: TSV, CSV, Excel-format, ODF-regneark, JSON og HTML-tabell. Det siste alternativet er nyttig hvis du vil publisere dine rensede data på nettet.

Konklusjon

Med denne opplæringen har du det grunnleggende om hvordan du bruker Tabula og OpenRefine. På et tidspunkt kan du bli overveldet av kompleksiteten bak OpenRefine, men ikke bekymre deg. Ta deg tid og husk at å jobbe med data ikke bare er kode eller klikk, du må følge din intuisjon for å få data i god form - og du kan alltid angre noe hvis du gjør en feil.

Hvis du har problemer med å komme i gang med Tabula eller OpenRefine, eller har noen unike metoder du vil dele, vennligst gi oss beskjed i kommentarene nedenfor..