Ajattele tätä mallia kuin isokokoista hiekkasihveliä: se on tarkoitettu seulomaan valtavista PDF-pinnoista ne olennaiset tiedonmuruset. Yrityksissä tällainen raaka-aine, josta nämä muruset löytyvät, voidaan tuntea nimellä ”sokea tieto”. Dataa, joka on kyllä olemassa, mutta hukkuu jopa tuhansiin monikymmensivuisiin asiakirjoihin.
Malli toimii täysin paikallisesti: se ei lähetä PDF-tiedostoja minnekään ulkoiseen palveluun, vaan prosessoi ne omassa ympäristössä. Siksi se on erityisen hyödyllinen, kun käsitellään luottamuksellisia sopimuksia, raportteja tai muuta herkkää aineistoa.
Käytännön hyödyt tulevat esiin erityisesti silloin, kun halutaan ajaa ”massa-analyysi”. Se voi ahmia tuhansia PDF:iä, ja malli seuloo niistä samat tiedonjyvät: halutut yksityiskohdat. Lopputuloksena saadaan esimerkiksi Excel-tiedosto tai vastaava listaus, jossa jokaisen PDF:n kohdalta näkyy juuri se ”pihvi”. Ei tarvitse itse käydä läpi koko pdf-muotoista valvontaa, vaan voidaan näppärästi tarkastella vain olennaisia rivejä. Näin tämä ”hiekkasihveli” muuttaa järjestelemättömän tietomassan selkeäksi, hallittavaksi kokonaisuudeksi.
IN ENGLISH:
Think of this model as an oversized sand sifter: it’s designed to extract the essential bits of information from vast surfaces of PDFs. In companies, the raw material from which these nuggets are found is often referred to as “dark data”. Information that does exist, but gets buried in thousands of lengthy documents.
The model runs entirely locally: it doesn’t send PDFs anywhere outside but processes them within your own environment. That makes it especially useful for handling confidential contracts, reports, or other sensitive documents.
The practical benefits become clear when you want to run a “bulk analysis.” The model can ingest thousands of PDFs and extract the same key pieces of information from each one. The result is something like an Excel file or similar list, where each PDF is distilled down to just the key detail—the “meat,” so to speak. You don’t have to read through the full documents yourself; instead, you get a clean view of just the essential rows.
In short, this “sand sifter” turns messy, unstructured data into a clear and manageable whole.
The system uses a locally deployed language model (the entire project is developed to run fully offline) to infer from the filename which entity is involved and which pricing information is associated with it. If a direct or fuzzy match is found, the PDF is linked to the correct row in an Excel sheet, and the details are added without the user needing to open the document. In effect, two related data points from different sources are identified and connected automatically.
The process then moves to the main analysis phase: PDFs are read either directly as text or via OCR. Due to well-known OCR errors, the system applies custom correction heuristics that clean up unnecessary line breaks, join fragmented numbers, and fix misplaced characters.
Once the text is reasonably clean, it is divided into larger logical sections called “chunks.” Within these chunks, the system searches for sentences (referred to as relevant_sents) that are likely to contain essential details—those that include key terms.
These sentences are then further split into smaller phrases (relevant_sents_2), using delimiters such as periods, colons, or line breaks. At the same time, irrelevant words—such as blacklisted terms that interfere with interpretation—are removed.
The end result is a concise and tightly scoped collection of text fragments that are statistically most likely to contain the desired information. For example, a 10-page PDF can be distilled down to just a few short lines of text.
These relevant_sents_2 snippets are saved in JSON format and merged back into the Excel file. They are then written into the “Details” column using wrapped text formatting, allowing the user to see all key information at a glance—without ever needing to open the original lengthy PDF.
One of the key insights of the project lies in recognizing the limits of OCR: when numbers are merged incorrectly or symbols are misplaced, only a human can make the correct judgment. This is not mechanical checking—it requires contextual understanding, relational reasoning, and sometimes reading between the lines. No current model can do this, nor does it need to; interpretation is a human task.
While some experimental features—like fine-tuning the language model—were ultimately left out, the overall system works exceptionally well. It filters hundreds of pages down to just the essential parts, and it does so transparently, reliably, and flexibly. There’s no need to open the contract separately; all critical information is neatly summarized in the additional info field. The time savings are substantial and indisputable.
Think of this model as a large-scale sand sieve: it’s designed to extract the crucial grains of information from massive PDF volumes. In many organizations, this kind of raw material—where the valuable data is buried—is often called “blind data”: information that exists, but is effectively lost within thousands of multi-page documents.
The model operates entirely locally: it does not send PDFs to any external service, but processes them within the user’s own environment. This makes it especially suitable for handling confidential contracts, reports, or other sensitive material.
The practical benefits become most apparent when running a “mass analysis.” The system can ingest thousands of PDFs, and consistently extract the same specific data points: the key details. The final output can be an Excel file or a similar listing, showing the “core message” for each PDF. There’s no need to manually inspect each document; just the essential lines are surfaced. In this way, the “sand sieve” turns an unstructured mass of information into a clear and manageable overview.
Ajattele tätä mallia kuin isokokoista hiekkasihveliä: se on tarkoitettu seulomaan valtavista PDF-pinnoista ne olennaiset tiedonmuruset. Yrityksissä tällainen raaka-aine, josta nämä muruset löytyvät, voidaan tuntea nimellä ”sokea tieto”. Dataa, joka on kyllä olemassa, mutta hukkuu jopa tuhansiin monikymmensivuisiin asiakirjoihin.
Malli toimii täysin paikallisesti: se ei lähetä PDF-tiedostoja minnekään ulkoiseen palveluun, vaan prosessoi ne omassa ympäristössä. Siksi se on erityisen hyödyllinen, kun käsitellään luottamuksellisia sopimuksia, raportteja tai muuta herkkää aineistoa.
Käytännön hyödyt tulevat esiin erityisesti silloin, kun halutaan ajaa ”massa-analyysi”. Se voi ahmia tuhansia PDF:iä, ja malli seuloo niistä samat tiedonjyvät: halutut yksityiskohdat. Lopputuloksena saadaan esimerkiksi Excel-tiedosto tai vastaava listaus, jossa jokaisen PDF:n kohdalta näkyy juuri se ”pihvi”. Ei tarvitse itse käydä läpi koko pdf-muotoista valvontaa, vaan voidaan näppärästi tarkastella vain olennaisia rivejä. Näin tämä ”hiekkasihveli” muuttaa järjestelemättömän tietomassan selkeäksi, hallittavaksi kokonaisuudeksi.
Koodi päättelee paikallisen kielimallin avulla (koko projekti on tehty siis paikallisena kehittämistyönä) tiedostonimestä, mikä taho on kyseessä ja mikä hintatieto siihen yhdistyy. Jos löytyy suora tai sumea (fuzzy) täsmäys, PDF yhdistetään oikeaan riviin Excelissä ja detaljit lisätään ilman, että käyttäjän tarvitsee avata dokumenttia. Samaan aikaan tunnistetaan siis eri paikoista kahdet eri toisiinsa liittyvät tiedot.
Sen jälkeen siirrytään varsinaiseen analyysiin: PDF:t luetaan suoraan tekstinä tai OCR:llä. OCR:n tunnetut virheet vaativat käyttöön räätälöidyt korjausheuristiikat, jotka siivoavat turhat rivinvaihdot, yhdistävät hajonneet numerot ja korjaavat väärin sijoittuneet merkit.
Kun teksti on saatu kohtuullisen siistiksi, se pilkotaan ensin chunkkeihin eli suurempiin loogisiin tekstikappaleisiin. Näistä chunkkien sisällä etsitään lauseita (relevant_sents), jotka sisältävät todnäk. olennaisia detaljeja, eli sellaisia, joissa esiintyy avainsanoja.
Tämän jälkeen nämä lauseet pilkotaan edelleen pienemmiksi fraaseiksi (relevant_sents_2), esim. pisteen, kaksoispisteen tai rivinvaihdon kohdalta. Samalla poistetaan turhat sanat, kuten mustalistatut termit, jotka haittaavat tulkintaa.
Lopputuloksena on tiivis ja tarkasti rajattu kokoelma fraasinpätkiä, joihin tilastollisesti todennäköisimmin sisältyy haluttu tieto. Yksi 10 sivun PDF saadaan esim. tiivistettyä muutamaan lyhyeeseen tekstiriviin.
Nämä relevant_sents_2-pätkät tallennetaan JSON-muodossa ja yhdistetään takaisin Exceliin. Lopuksi ne kirjoitetaan Excelin “Tiedot”-sarakkeeseen wrap_textin kanssa, jolloin käyttäjä näkee yhdellä silmäyksellä kaikki olennaiset kohdat, ilman että tarvitsee avata alkuperäistä laajaa PDF:ää.
Yksi projektin tärkeimmistä oivalluksista liittyi OCR:n epätarkkuuksiin: kun numerot yhdistyvät väärin tai symbolit siirtyvät, vain ihminen voi tehdä oikean päätelmän. Tämä ei ole mekaanista tarkistusta, vaan vaatii kykyä tulkita kontekstia, suhteita ja joskus rivien välistä. Yksikään nykymalli ei tähän vielä pysty, eikä tarvitsekaan, tulkinta kuuluu ihmiselle.
Vaikka osa kokeellisista ominaisuuksista, kuten hienosäädetyn kielimallin hyödyntäminen, jäi taustalle, kokonaisuus toimii erittäin hyvin. Se suodattaa sadoista sivuista vain ne tärkeät kohdat ja tekee sen läpinäkyvästi, luotettavasti ja muokattavasti. Sopimusta ei tarvi siis erikseen avata, vaan olennaiset seikat löytyvät kätevästi lisätiedot-kentästä. Ajansäästö on mittava ja kiistaton.