Bearbeta bolånedokument med intelligent dokumentbehandling med Amazon Textract och Amazon Comprehend PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Bearbeta bolånedokument med intelligent dokumentbehandling med Amazon Textract och Amazon Comprehend

Organisationer inom låne- och bolånebranschen behandlar tusentals dokument dagligen. Från en ny bolåneansökan till refinansiering av bolån involverar dessa affärsprocesser hundratals dokument per ansökan. Det finns begränsad automatisering tillgänglig idag för att bearbeta och extrahera information från alla dokument, särskilt på grund av varierande format och layouter. På grund av den stora mängden applikationer är det en tidskrävande, mycket manuell, felbenägen och dyr process att fånga strategiska insikter och få nyckelinformation från innehållet. Äldre verktyg för optisk teckenigenkänning (OCR) är oöverkomliga, felbenägna, kräver mycket konfigurering och är svåra att skala. Intelligent dokumentbehandling (IDP) med AWS-tjänster för artificiell intelligens (AI) hjälper till att automatisera och påskynda behandlingen av bolåneansökningar med mål om snabbare beslut av hög kvalitet, samtidigt som de totala kostnaderna minskar.

I det här inlägget visar vi hur du kan använda maskininlärningsfunktioner (ML) med amazontextoch Amazon Comprehend att behandla handlingar i en ny bolåneansökan, utan behov av ML-kunskaper. Vi utforskar de olika faserna av IDP som visas i följande figur, och hur de ansluter till stegen som är involverade i en ansökningsprocess för bolån, såsom inlämning av ansökningar, underwriting, verifiering och stängning.

Även om varje bolåneansökan kan vara unik, tog vi hänsyn till några av de vanligaste dokumenten som ingår i en bolåneansökan, som formuläret Unified Residential Loan Application (URLA-1003), 1099-formulär och pantbrev.

Lösningsöversikt

Amazon Textract är en ML-tjänst som automatiskt extraherar text, handstil och data från skannade dokument med förutbildade ML-modeller. Amazon Comprehend är en NLP-tjänst (natural-language processing) som använder ML för att avslöja värdefulla insikter och kopplingar i text och kan utföra dokumentklassificering, namnentitetsigenkänning (NER), ämnesmodellering och mer.

Följande figur visar faserna av IDP när det gäller faserna i en ansökningsprocess för bolån.

Bilden visar en lösningsarkitektur på hög nivå för faserna av intelligent dokumentbehandling (IDP) när den relaterar till stadierna i en bolåneansökan.

I början av processen laddas dokument upp till en Amazon enkel lagringstjänst (Amazon S3) hink. Detta initierar en dokumentklassificeringsprocess för att kategorisera dokumenten i kända kategorier. Efter att dokumenten har kategoriserats är nästa steg att extrahera nyckelinformation från dem. Vi utför sedan berikning för utvalda dokument, vilket kan vara saker som redaktion av personligt identifierbar information (PII), dokumenttaggning, metadatauppdateringar och mer. Nästa steg innebär att validera data som extraherats i tidigare faser för att säkerställa att en bolåneansökan är fullständig. Validering kan göras via regler för företagsvalidering och regler för korsdokumentvalidering. Förtroendepoängen för den extraherade informationen kan också jämföras med ett fastställt tröskelvärde och automatiskt dirigeras till en mänsklig granskare genom Amazon Augmented AI (Amazon A2I) om tröskeln inte är uppfylld. I slutfasen av processen skickas den extraherade och validerade datan till nedströmssystem för vidare lagring, bearbetning eller dataanalys.

I de följande avsnitten diskuterar vi faserna av IDP när det relaterar till faserna av en bolåneansökan i detalj. Vi går igenom faserna av IDP och diskuterar typerna av dokument; hur vi lagrar, klassificerar och extraherar information, och hur vi berikar dokumenten med hjälp av maskininlärning.

Dokumentlagring

Amazon S3 är en objektlagringstjänst som erbjuder branschledande skalbarhet, datatillgänglighet, säkerhet och prestanda. Vi använder Amazon S3 för att säkert lagra inteckningsdokumenten under och efter ansökningsprocessen för bolån. A ansökningspaket för inteckning kan innehålla flera typer av formulär och dokument, såsom URLA-1003, 1099-INT/DIV/RR/MISC, W2, lönekort, kontoutdrag, kreditkortsutdrag och mer. Dessa handlingar lämnas in av sökanden i ansökningsfasen för bolån. Utan att manuellt titta igenom dem kanske det inte är omedelbart tydligt vilka dokument som ingår i paketet. Denna manuella process kan vara tidskrävande och dyr. I nästa fas automatiserar vi denna process med hjälp av Amazon Comprehend för att klassificera dokumenten i sina respektive kategorier med hög noggrannhet.

Dokumentklassificering

Dokumentklassificering är en metod med hjälp av vilken ett stort antal oidentifierade dokument kan kategoriseras och märkas. Vi utför denna dokumentklassificering med hjälp av en Amazon Comprehend anpassad klassificering. En anpassad klassificerare är en ML-modell som kan tränas med en uppsättning märkta dokument för att känna igen de klasser som är av intresse för dig. Efter att modellen har tränats och distribuerats bakom en värdslutpunkt kan vi använda klassificeraren för att avgöra vilken kategori (eller klass) ett visst dokument tillhör. I det här fallet utbildar vi en anpassad klassificerare i flerklassläge, vilket kan göras antingen med en CSV-fil eller en utökad manifestfil. För denna demonstration använder vi en CSV-fil för att träna klassificeraren. Se vår GitHub repository för hela kodexemplet. Följande är en översikt över de inblandade stegen på hög nivå:

  1. Extrahera UTF-8-kodad vanlig text från bild- eller PDF-filer med Amazon Textract DetectDocumentText API.
  2. Förbered träningsdata för att träna en anpassad klassificerare i CSV-format.
  3. Träna en anpassad klassificerare med hjälp av CSV-filen.
  4. Distribuera den tränade modellen med en slutpunkt för realtidsklassificering av dokument eller använd multi-class-läge, som stöder både realtids- och asynkrona operationer.

Följande diagram illustrerar denna process.

Bilden visar Amazon Comprehends anpassade klassificeringsprocess och dokumentklassificering med den utbildade och distribuerade klassificeringsmodellen (realtid eller batch).

Du kan automatisera dokumentklassificering med hjälp av den distribuerade slutpunkten för att identifiera och kategorisera dokument. Denna automatisering är användbar för att verifiera om alla nödvändiga dokument finns i ett bolånepaket. En saknad handling kan snabbt identifieras, utan manuellt ingripande, och meddelas sökanden mycket tidigare i processen.

Utdrag av dokument

I denna fas extraherar vi data från dokumentet med hjälp av Amazon Textract och Amazon Comprehend. För strukturerade och semistrukturerade dokument som innehåller formulär och tabeller använder vi Amazon Textract Analysera dokument API. För specialiserade dokument som ID-dokument tillhandahåller Amazon Textract Analysera ID API. Vissa dokument kan också innehålla tät text, och du kan behöva extrahera affärsspecifika nyckeltermer från dem, även kända som enheter. Vi använder anpassad enhetsigenkänning Amazon Comprehends förmåga att träna en anpassad enhetsidentifierare, som kan identifiera sådana enheter från den täta texten.

I följande avsnitt går vi igenom exempeldokumenten som finns i ett bolånepaket och diskuterar de metoder som används för att extrahera information från dem. För vart och ett av dessa exempel ingår ett kodavsnitt och en kort exempelutdata.

Extrahera data från Unified Residential Loan Application URLA-1003

En Unified Residential Loan Application (URLA-1003) är ett ansökningsformulär för bostadslån som är standard i branschen. Det är ett ganska komplicerat dokument som innehåller information om bolånesökande, typ av fastighet som köps, belopp som finansieras och andra detaljer om fastighetsköpets karaktär. Följande är ett exempel på URLA-1003, och vår avsikt är att extrahera information från detta strukturerade dokument. Eftersom detta är ett formulär använder vi AnalyzeDocument API med en funktionstyp av FORM.

Bilden visar ett exempel på ett formulär för Unified Residential Loan Application URLA-1003

Funktionstypen FORM extraherar formulärinformation från dokumentet, som sedan returneras i nyckel-värdeparformat. Följande kodavsnitt använder amazon-textract-textractor Python-bibliotek för att extrahera formulärinformation med bara några rader kod. Bekvämlighetsmetoden call_textract() kallar AnalyzeDocument API internt, och parametrarna som skickas till metoden abstraherar några av de konfigurationer som API:n behöver för att köra extraktionsuppgiften. Document är en bekvämlighetsmetod som används för att analysera JSON-svaret från API:et. Det ger en abstraktion på hög nivå och gör API-utdata iterabel och lätt att få information ur. För mer information, se Textract Response Parser och Textractor.

from textractcaller.t_call import call_textract, Textract_Features
from trp import Document

response_urla_1003 = call_textract(input_document='s3://<your-bucket>/URLA-1003.pdf', 
                                   features=[Textract_Features.FORMS])
doc_urla_1003 = Document(response_urla_1003)
for page in doc_urla_1003.pages:
    forms=[]
    for field in page.form.fields:
        obj={}
        obj[f'{field.key}']=f'{field.value}'
        forms.append(obj)
print(json.dumps(forms, indent=4))

Observera att utgången innehåller värden för kryssrutor eller alternativknappar som finns i formuläret. Till exempel, i exempel-URLA-1003-dokumentet Inköp alternativet har valts. Motsvarande utgång för alternativknappen extraheras som "Purchase" (nyckel) och "SELECTED” (värde), vilket indikerar att alternativknappen har valts.

[
    { "No. of Units": "1" },
    { "Amount": "$ 450,000.00" },
    { "Year Built": "2010" },
    { "Purchase": "SELECTED" },
    { "Title will be held in what Name(s)": "Alejandro Rosalez" },
    { "Fixed Rate": "SELECTED" },
    ...
]

Extrahera data från 1099 formulär

Ett låneansökningspaket kan också innehålla ett antal IRS-dokument, såsom 1099-DIV, 1099-INT, 1099-MISC och 1099-R. Dessa dokument visar sökandens inkomster via räntor, utdelningar och andra diverse inkomstkomponenter som är användbara under emissionsgarantin för att fatta beslut. Följande bild visar en samling av dessa dokument, som har liknande struktur. Men i vissa fall innehåller dokumenten formulärinformation (markerad med de röda och gröna begränsningsrutorna) samt tabellinformation (markerad med de gula begränsningsrutorna).

Bilden visar exempel på 1099 INT-, DIV-, MISC- och R-former.

För att extrahera formulärinformation använder vi liknande kod som förklarats tidigare med AnalyzeDocument API. Vi passerar en extra funktion av TABELL till API:et för att indikera att vi behöver både formulär- och tabelldata extraherade från dokumentet. Följande kodavsnitt använder AnalyzeDocument API med FORMS- och TABLES-funktioner i 1099-INT-dokumentet:

from textractcaller.t_call import call_textract, Textract_Features
from trp import Document
response_1099_int = call_textract(input_document='s3://<your-bucket>/1099-INT-2018.pdf',
                                  features=[Textract_Features.TABLES, 
                                            Textract_Features.FORMS])
doc_1099_int = Document(response_1099_int)
num_tables=1
for page in doc_1099_int.pages:     
    for table in page.tables:
        num_tables=num_tables+1
        for r, row in enumerate(table.rows):
            for c, cell in enumerate(row.cells):
                print(f"Cell[{r}][{c}] = {cell.text}")
        print('n')

Eftersom dokumentet innehåller en enda tabell är kodens utdata enligt följande:

Table 1
-------------------
Cell[0][0] = 15 State 
Cell[0][1] = 16 State identification no. 
Cell[0][2] = 17 State tax withheld 
Cell[1][0] = 
Cell[1][1] = 34564 
Cell[1][2] = $ 2000 
Cell[2][0] = 
Cell[2][1] = 23543 
Cell[2][2] = $ 1000

Tabellinformationen innehåller cellpositionen (rad 0, kolumn 0 och så vidare) och motsvarande text inom varje cell. Vi använder en bekvämlighetsmetod som kan omvandla denna tabelldata till en lättläst rutnätsvy:

from textractprettyprinter.t_pretty_print import Textract_Pretty_Print, get_string, Pretty_Print_Table_Format
print(get_string(textract_json=response_1099_int, 
                 table_format=Pretty_Print_Table_Format.grid, 
                 output_type=[Textract_Pretty_Print.TABLES]))

Vi får följande utdata:

+----------+-----------------------------+-----------------------+
| 15 State | 16 State identification no. | 17 State tax withheld |
+----------+-----------------------------+-----------------------+
|          | 34564                       | $ 2000                |
+----------+-----------------------------+-----------------------+
|          | 23543                       | $ 1000                |
+----------+-----------------------------+-----------------------+

För att få utdata i ett lättanvänt CSV-format, formattypen för Pretty_Print_Table_Format.csv kan föras in i table_format parameter. Andra format som TSV (tabseparerade värden), HTML och Latex stöds också. För mer information, se Textract-PrettyPrinter.

Extrahera data från en pantbrev

Ett bolånepaket kan innehålla ostrukturerade dokument med tät text. Några exempel på täta textdokument är kontrakt och avtal. En pantbrev är ett avtal mellan en bolånesökande och långivaren eller hypoteksbolaget, och innehåller information i täta textstycken. I sådana fall gör bristen på struktur det svårt att hitta viktig affärsinformation som är viktig i ansökningsprocessen för bolån. Det finns två sätt att lösa detta problem:

I följande exempel på hypotekslån är vi särskilt intresserade av att ta reda på det månatliga betalningsbeloppet och kapitalbeloppet.

Bilden visar ett prov på ett pantbrevsdokument.

För det första tillvägagångssättet använder vi Query och QueriesConfig bekvämlighetsmetoder för att konfigurera en uppsättning frågor som skickas till Amazon Textract AnalyzeDocument API-anrop. Om dokumentet är flersidigt (PDF eller TIFF) kan vi också ange sidnumren där Amazon Textract ska leta efter svar på frågan. Följande kodavsnitt visar hur du skapar frågekonfigurationen, gör ett API-anrop och sedan analyserar svaret för att få svaren från svaret:

from textractcaller import QueriesConfig, Query
import trp.trp2 as t2

#Setup the queries
query2 = Query(text="What is the principal amount borrower has to pay?", alias="PRINCIPAL_AMOUNT", pages=["1"])
query4 = Query(text="What is the monthly payment amount?", alias="MONTHLY_AMOUNT", pages=["1"])

#Setup the query config with the above queries
queries_config = QueriesConfig(queries=[query1, query2, query3, query4])
#Call AnalyzeDocument with the queries_config
response_mortgage_note = call_textract(input_document='s3://<your-bucket>/Mortgage-Note.pdf',
                                       features=[Textract_Features.QUERIES],
                                       queries_config=queries_config)
doc_mortgage_note: t2.TDocumentSchema = t2.TDocumentSchema().load(response_mortgage_note) 

entities = {}
for page in doc_mortgage_note.pages:
    query_answers = doc_mortgage_note.get_query_answers(page=page)
    if query_answers:
        for answer in query_answers:
            entities[answer[1]] = answer[2]
print(entities)

Vi får följande utdata:

{
    'PRINCIPAL_AMOUNT': '$ 555,000.00',
    'MONTHLY_AMOUNT': '$2,721.23',
}

För det andra tillvägagångssättet använder vi Amazon Comprehend DetekteraEntiteter API med pantsedeln, som returnerar de enheter som den upptäcker i texten från en fördefinierad uppsättning enheter. Dessa är enheter som Amazon Comprehend-enhetsidentifieraren är förutbildad med. Men eftersom vårt krav är att upptäcka specifika enheter, utbildas en anpassad enhetsidentifierare från Amazon Comprehend med en uppsättning provdokument för hypotekslån och en lista över enheter. Vi definierar entitetsnamnen som PRINCIPAL_AMOUNT och MONTHLY_AMOUNT. Träningsdata förbereds efter Amazon Comprehend-utbildningen riktlinjer för beredning av data för anpassad enhetsigenkänning. Enhetsidentifieraren kan tränas med dokumentkommentarer eller med enhet listar. I detta exempel använder vi entitetslistor för att träna modellen. Efter att vi har tränat modellen kan vi distribuera den med en slutpunkt i realtid eller i batch-läge för att upptäcka de två enheterna från dokumentinnehållet. Följande är stegen för att träna en anpassad enhetsidentifierare och distribuera den. För en fullständig kodgenomgång, se vårt GitHub-förråd.

  1. Förbered träningsdata (entitetslistan och dokumenten med (UTF-8-kodat) oformaterad text).
  2. Starta utbildningen för enhetsidentifierare med hjälp av CreateEntityRecognizer API som använder träningsdata.
  3. Distribuera den tränade modellen med en realtidsslutpunkt med hjälp av Skapa slutpunkt API.

Extrahera data från ett amerikanskt pass

Amazon Textract analysera identitetshandlingar kapacitet kan upptäcka och extrahera information från USA-baserade ID-handlingar såsom ett körkort och pass. De AnalyzeID API kan upptäcka och tolka underförstådda fält i ID-dokument, vilket gör det enkelt att extrahera specifik information från dokumentet. Identitetsdokument är nästan alltid en del av ett låneansökningspaket, eftersom det används för att verifiera låntagarens identitet under emissionsprocessen och för att validera riktigheten av låntagarens biografiska data.

Bilden visar ett prov på ett amerikanskt pass

Vi använder en bekvämlighetsmetod som heter call_textract_analyzeid, som kallar AnalyzeID API internt. Vi itererar sedan över svaret för att erhålla de upptäckta nyckel-värdeparen från ID-dokumentet. Se följande kod:

from textractcaller import call_textract_analyzeid
import trp.trp2_analyzeid as t2id

response_passport = call_textract_analyzeid(document_pages=['s3://<your-bucket>/Passport.pdf'])
doc_passport: t2id.TAnalyzeIdDocument = t2id.TAnalyzeIdDocumentSchema().load(response_passport)

for id_docs in response_passport['IdentityDocuments']:
    id_doc_kvs={}
    for field in id_docs['IdentityDocumentFields']:
        if field['ValueDetection']['Text']:
            id_doc_kvs[field['Type']['Text']] = field['ValueDetection']['Text']
print(id_doc_kvs)

AnalyzeID returnerar information i en struktur som kallas IdentityDocumentFields, som innehåller de normaliserade nycklarna och deras motsvarande värde. Till exempel, i följande utgång, FIRST_NAME är en normaliserad nyckel och värdet är ALEJANDRO. I exemplet på passbilden är fältet för förnamnet märkt som "Given Names / Prénoms / Nombre", dock AnalyzeID kunde normalisera det till nyckelnamnet FIRST_NAME. För en lista över normaliserade fält som stöds, se Identitetsdokumentation Svarsobjekt.

{
    'FIRST_NAME': 'ALEJANDRO',
    'LAST_NAME': 'ROSALEZ',
    'DOCUMENT_NUMBER': '918268822',
    'EXPIRATION_DATE': '31 JAN 2029',
    'DATE_OF_BIRTH': '15 APR 1990',
    'DATE_OF_ISSUE': '29 JAN 2009',
    'ID_TYPE': 'PASSPORT',
    'ENDORSEMENTS': 'SEE PAGE 27',
    'PLACE_OF_BIRTH': 'TEXAS U.S.A.'
}

Ett bolånepaket kan innehålla flera andra dokument, såsom en lönebok, W2-formulär, kontoutdrag, kreditkortsutdrag och anställningsverifieringsbrev. Vi har exempel på vart och ett av dessa dokument tillsammans med koden som krävs för att extrahera data från dem. För den fullständiga kodbasen, kolla in anteckningsböckerna i vår GitHub repository.

Dokumentberikning

En av de vanligaste formerna av dokumentberikning är redigering av känslig eller konfidentiell information på dokument, vilket kan vara obligatoriskt på grund av integritetslagar eller -förordningar. Till exempel kan en bolånesökandes lönekort innehålla känsliga PII-data, såsom namn, adress och SSN, som kan behöva redigeras för utökad lagring.

I föregående exempel på betalningsdokumentet utför vi redaktion av PII-data som SSN, namn, bankkontonummer och datum. För att identifiera PII-data i ett dokument använder vi Amazon Comprehend PII-detektering förmåga via DetectPIIEntities API. Detta API inspekterar innehållet i dokumentet för att identifiera förekomsten av PII-information. Eftersom detta API kräver inmatning i UTF-8-kodat vanligt textformat, extraherar vi först texten från dokumentet med Amazon Textract DetectDocumentText API, som returnerar texten från dokumentet och även returnerar geometriinformation som begränsningsrutans dimensioner och koordinater. En kombination av båda utdata används sedan för att rita redigeringar på dokumentet som en del av anrikningsprocessen.

Granska, validera och integrera data

Extraherade data från dokumentutvinningsfasen kan behöva valideras mot specifika affärsregler. Specifik information kan också valideras över flera dokument, även känd som cross-doc validering. Ett exempel på cross-doc validering kan vara att jämföra den sökandes namn i ID-handlingen med namnet i inteckningsansökan. Du kan också göra andra valideringar som fastighetsvärdesuppskattningar och villkorade emissionsbeslut i denna fas.

En tredje typ av validering är relaterad till konfidenspoängen för de extraherade uppgifterna i dokumentextraktionsfasen. Amazon Textract och Amazon Comprehend ger en konfidenspoäng för upptäckta formulär, tabeller, textdata och enheter. Du kan konfigurera en tröskel för konfidenspoäng för att säkerställa att endast korrekta värden skickas nedströms. Detta uppnås via Amazon A2I, som jämför konfidenspoängen för upptäckta data med en fördefinierad konfidensgräns. Om tröskeln inte uppfylls, dirigeras dokumentet och den extraherade utdatan till en människa för granskning via ett intuitivt användargränssnitt. Granskaren vidtar korrigerande åtgärder på uppgifterna och sparar dem för vidare bearbetning. För mer information, se Kärnkoncept för Amazon A2I.

Slutsats

I det här inlägget diskuterade vi faserna av intelligent dokumentbehandling när det gäller faser av en bolåneansökan. Vi tittade på några vanliga exempel på dokument som kan hittas i ett bolånepaket. Vi diskuterade också sätt att extrahera och bearbeta strukturerat, semi-strukturerat och ostrukturerat innehåll från dessa dokument. IDP ger ett sätt att automatisera end-to-end bearbetning av hypoteksdokument som kan skalas till miljontals dokument, vilket förbättrar kvaliteten på ansökningsbeslut, minskar kostnaderna och servar kunderna snabbare.

Som nästa steg kan du prova kodexemplen och anteckningsböckerna i vår GitHub repository. För att lära dig mer om hur IDP kan hjälpa dina dokumentbearbetningsarbetsbelastningar, besök Automatisera databehandling från dokument.


Om författarna

Bearbeta bolånedokument med intelligent dokumentbehandling med Amazon Textract och Amazon Comprehend PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Anjan Biswas är en Senior AI Services Solutions Architect med fokus på AI/ML och Data Analytics. Anjan är en del av det världsomspännande AI-serviceteamet och arbetar med kunder för att hjälpa dem att förstå och utveckla lösningar på affärsproblem med AI och ML. Anjan har över 14 års erfarenhet av att arbeta med globala supply chain-, tillverknings- och detaljhandelsorganisationer och hjälper aktivt kunder att komma igång och skala på AWS AI-tjänster.

Bearbeta bolånedokument med intelligent dokumentbehandling med Amazon Textract och Amazon Comprehend PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dwiti Pathak är en Senior Technical Account Manager baserad från San Diego. Hon är fokuserad på att hjälpa halvledarindustrin att engagera sig i AWS. På fritiden gillar hon att läsa om ny teknik och spela brädspel.

Bearbeta bolånedokument med intelligent dokumentbehandling med Amazon Textract och Amazon Comprehend PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Balaji Puli är en lösningsarkitekt baserad i Bay Area, CA. Hjälper för närvarande utvalda kunder inom hälsovård och life science i nordvästra USA att påskynda deras AWS-molnadoption. Balaji tycker om att resa och älskar att utforska olika kök.

Tidsstämpel:

Mer från AWS maskininlärning