OCR-kommentarer for fakturaer og kvitteringer: Lære AI å lese finansielle dokumenter

Høykvalitets annotasjon av fakturaer, kvitteringer og skjemaer er grunnlaget for pålitelige AI-dokumentbehandlingssystemer. Denne omfattende veiledningen tar for seg beste praksis, teknikker og nye tilnærminger for å skape opplæringsdatasett som effektiviserer finansielle arbeidsflyter og endrer forretningsdriften.

Forstå OCR-kommentarer for finansielle dokumenter

OCR-annotasjon for finansdokumenter innebærer å skape merkede opplæringsdata som lærer AI-modeller å identifisere og trekke ut strukturert informasjon fra ustrukturerte dokumentbilder. I motsetning til generell tekstgjenkjenning krever annotasjon av finansdokumenter spesialiserte tilnærminger som er skreddersydd for fakturaer, kvitteringer, skjemaer og kontoutskrifter.

Profesjonell OCR-annotering for finansielle dokumenter
Moderne grensesnitt for dokumentkommentarer som behandler flere typer finansdokumenter samtidig

Den økonomiske effekten av effektiv dokumentautomatisering er betydelig. Ifølge undersøkelser behandler organisasjoner i gjennomsnitt 12 500 fakturaer per ansatt i leverandørreskontroen hvert år, og kostnadene for manuell behandling varierer fra 15-40 dollar per dokument, avhengig av kompleksiteten. Ved å implementere OCR-systemer som er opplært på høykvalitets annoterte datasett, rapporterer bedrifter at de reduserer behandlingstiden med opptil 80 % og reduserer kostnadene med 60-80 %.

Annotasjon om avgrensningsboks

Grunnlaget for OCR av dokumenter begynner med presis avgrensning av tekstbokser - ved å tegne rektangulære eller polygonale former rundt tekstelementer for å identifisere deres nøyaktige plassering. For finansdokumenter omfatter dette vanligvis bokser på feltnivå (fakturanummer, datoer, totalsummer), bokser på linjepostnivå (individuelle transaksjonsoppføringer) og bokser på tegnnivå for tekst som er vanskelig å lese.

Transkripsjon av tekst

Når tekstområder er identifisert ved hjelp av avgrensningsbokser, må hvert avgrensede område transkriberes nøyaktig - bildet av teksten må konverteres til maskinlesbare tegn. Dette omfatter transkripsjon av ren tekst, bevaring av formatering og korrekt håndtering av spesialtegn som valutasymboler og prosenttegn.

Feltklassifisering

I tillegg til enkel tekstgjenkjenning omfatter OCR-annotasjon for finansdokumenter semantisk forståelse: klassifisering av felttyper (fakturanummer, dato, leverandørnavn, totalbeløp), hierarkiske relasjoner (overskriftsinformasjon, linjeposter, delsummer) og kontekstuell gruppering av relatert informasjon.

Kartlegging av relasjoner

Avansert annotering innebærer å etablere forbindelser mellom relaterte elementer som kan være visuelt atskilt i dokumentet. For eksempel kan man koble sammen varelinjer med tilhørende mengder og priser, eller koble sammen flere sider i samme dokument for å opprettholde sammenhengen på tvers av sideskift.

Visualisering av OCR-annotasjonskomponenter
Oversikt over den omfattende OCR-annoteringsprosessen fra dokumentfangst til strukturert datauttrekk

For organisasjoner som implementerer systemer for dokumentautomatisering, har kvaliteten på annoteringen direkte innvirkning på forretningsprosessene nedstrøms. Ifølge nyere studier oppnår implementeringer som bruker annoterte opplæringsdata av høy kvalitet, en nøyaktighet på over 95 % sammenlignet med 80-85 % for systemer som er opplært på grunnleggende datasett. Denne forbedringen reduserer behovet for manuell verifisering og korrigering betraktelig, noe som øker avkastningen på investeringen ytterligere.

Viktige utfordringer ved OCR-annotering av finansdokumenter

Til tross for de potensielle fordelene er det flere betydelige utfordringer knyttet til å lage effektive OCR-kommentarer for finansdokumenter:

Dokumentvariabilitet

Økonomidokumenter varierer enormt i struktur, format og innhold. Fakturaer fra ulike leverandører har ulike oppsett og inneholder forskjellige informasjonsfelt. Kvitteringer varierer fra strukturerte bedriftsformater til uformelle håndskrevne notater. Skjemaer kan inneholde både maskinskrevet informasjon, håndskrift, avmerkingsbokser og signaturer. Denne variasjonen gjør det nødvendig med annoteringsmetoder som kan tilpasses ulike dokumenttyper.

Problemer med kvalitet og lesbarhet

Ekte finansdokumenter lider ofte av kvalitetsproblemer: fysisk forringelse (krøller, flekker, rifter, falming), artefakter (skygger, gjenskinn, perspektivforvrengning) og utskriftsproblemer (falmet termopapir, lite toner, blekkblødning). Effektiv annotering må ta hensyn til disse kvalitetsvariasjonene for å kunne trene opp robuste modeller som er i stand til å behandle dokumenter under forhold som ikke er ideelle.

Språk- og notasjonskompleksitet

Finansielle dokumenter inneholder ofte spesialisert notasjon og flerspråklige elementer. Ulike land bruker forskjellige konvensjoner for valutaer, desimaler og tusenskilletegn. Datoformatene varierer fra region til region (MM/DD/ÅÅÅÅÅ vs. DD/MM/ÅÅÅÅÅ). Bransjespesifikk terminologi og forkortelser gjør det enda mer komplekst. Annotasjonssystemer må håndtere disse variasjonene for å skape omfattende opplæringsdata.

Hensyn til sikkerhet og samsvar

Finansdokumenter inneholder sensitiv informasjon som er underlagt lovpålagte krav. Personidentifiserbar informasjon (PII), finansielle data og andre konfidensielle opplysninger må beskyttes under annotasjonsprosessen. Arbeidsflyten for annotering må omfatte egnede sikkerhetstiltak, anonymiseringsteknikker og samsvarshensyn for å ivareta personvern og overholdelse av regelverk.

Vanlige utfordringer med OCR-kommentarer
Visuell fremstilling av vanlige utfordringer ved OCR-annotering av finansdokumenter

"Presisjonen i automatisert dokumentbehandling er direkte proporsjonal med kvaliteten på annotasjonen i opplæringsdataene. I finansielle arbeidsflyter der nøyaktighet er avgjørende, blir kvaliteten på annoteringen selve grunnlaget for fremragende drift."

- Ekspert på automatisering av finansielle operasjoner

Beste praksis for OCR-annotering av finansielle dokumenter

Etablering av standardiserte annotasjonsprotokoller

Det er viktig å lage tydelige og detaljerte retningslinjer for annotasjon for å sikre konsistens på tvers av store datasett:

Grensesnitt for OCR-annoteringsverktøy
Profesjonelt OCR-grensesnitt med feltklassifiseringspanel og kvalitetskontrollmålinger

Standardisert felttaksonomi

Etablere enhetlige definisjoner for dokumentelementer (f.eks. hva som utgjør en "forfallsdato" eller et "fakturanummer"). Opprett omfattende felttypebiblioteker som dekker alle mulige informasjonselementer på tvers av ulike dokumenttyper. Denne taksonomien bør inkludere hierarkiske relasjoner mellom feltene og standard navnekonvensjoner.

Protokoller for avgrensningsbokser

Definer nøyaktige regler for plassering av bokser, håndtering av flerlinjede felt og håndtering av berøringstegn. Angi for eksempel om det skal brukes separate bokser for de enkelte linjene i en adresse med flere linjer eller én enkelt boks for hele adressefeltet. Dokumenter nøyaktig hvordan felt som strekker seg over flere kolonner eller tabeller, skal håndteres.

Edge Case-håndtering

Dokumenter fremgangsmåter for tvetydige situasjoner som delvis synlig tekst, overlappende frimerker eller håndskrevne merknader. Lag eksplisitte retningslinjer for håndtering av rettelser, overstrykninger og andre dokumentendringer. Disse retningslinjene bør inneholde representative eksempler på korrekt annotasjon for utfordrende tilfeller.

Klassifisering av dokumenttyper

Utvikle klare kriterier for å skille mellom dokumenttyper (fakturaer, kvitteringer, kontoutskrifter osv.) og deres undertyper. Denne klassifiseringen gir viktig kontekst for feltuttrekk og hjelper systemet med å bruke de riktige behandlingsreglene for hver dokumentkategori.

Kvalitetssikring i flere trinn

For å sikre nøyaktige annoteringer kreves det robuste kvalitetskontrollprosesser:

  • Konsensus mellom flere annotatorer: Flere annotatorer jobber uavhengig av hverandre med de samme dokumentene, og avstemmer forskjeller. Denne tilnærmingen bidrar til å identifisere og løse tvetydigheter i tolkningen og forbedrer den generelle kvaliteten på annoteringen.
  • Ekspertgjennomgang: Implementering av gjennomgangsfaser der eksperter på finansdomener verifiserer feltklassifiseringer og relasjoner. Domeneeksperter kan identifisere subtile feil som kan bli oversett av generelle kommentatorer.
  • Statistisk validering: Bruk av automatiserte verktøy for å identifisere ekstremverdier og potensielle feil i annoteringer. For eksempel ved å validere at datoene som er hentet ut, ligger innenfor rimelige intervaller, eller at numeriske beregninger (delsum + skatt = total) er konsistente.
  • Validering av testsett: Opprette testsett med perfekte annotasjoner for å måle kvaliteten på annotasjonene og måle forbedringer over tid.
OCR-miljø for dokumentbehandling
Profesjonelt dokumentbehandlingsmiljø med flere stasjoner for kvalitetskontroll

Spesialiserte annoteringsverktøy og -teknologier

Annotering av finansielle dokumenter krever spesialutviklet programvare med spesifikke funksjoner:

Støtte for polygonannotasjon

Mens enkle rektangler fungerer for mange tekstfelt, kan polygonverktøy brukes til å lage presise konturer av uregelmessig formede områder. Hos Your Personal AI støtter våre annotasjonsplattformer avanserte polygonverktøy som kan skape presise grenser rundt tekst, selv når den vises i vinkler eller i uregelmessige formasjoner.

Integrasjoner for feltklassifisering

Avanserte annotasjonsplattformer integrerer omfattende taksonomier for felttyper som er spesifikke for finansdokumenter. Disse systemene gjør det mulig for kommentatorer å raskt klassifisere tekstområder i henhold til standardiserte kategorier, noe som sikrer konsistens på tvers av store datasett og flere kommentatorer.

Malfunksjoner

For gjentakende dokumentformater (som fakturaer fra bestemte leverandører) kan malbasert annotasjon forbedre effektiviteten dramatisk. Disse systemene gjør det mulig å lage gjenbrukbare maler som kan brukes på nye dokumenter fra samme kilde, slik at det kun kreves verifisering og justering i stedet for fullstendig reannotering.

Verktøy for kartlegging av relasjoner

Avanserte annotasjonsplattformer inkluderer verktøy for å definere forbindelser mellom relaterte felt. For eksempel kan man koble sammen linjeposter med tilsvarende beløp, eller koble sammen overskriftsinformasjon med relevante seksjoner. Disse relasjonene er avgjørende for å lære opp AI-systemer som forstår dokumentstrukturen, ikke bare isolerte tekstelementer.

Bransjeapplikasjoner for AI-klare finansdokumentkommentarer

Annoterte datasett av høy kvalitet muliggjør transformative AI-applikasjoner på tvers av flere forretningsfunksjoner:

Applikasjoner for behandling av finansielle dokumenter
Flere bransjetilpasninger av OCR-annotasjonsteknologi for behandling av finansdokumenter

Automatisering av leverandørreskontroen

Automatisert fakturabehandling er et av de mest effektive bruksområdene for OCR-annotasjon. Systemer som er opplært på høykvalitets annoterte datasett, kan oppnå berøringsfri behandling med fullstendig automatisering av datauttrekk, validering og innlegging i regnskapssystemer. Ledende implementeringer rapporterer om prosesseringsrater på over 90 % for standardfakturaer, og menneskelig inngripen er kun nødvendig i unntakstilfeller.

Transformasjon av utgiftshåndtering

Kvitteringsbehandlingen har blitt revolusjonert ved hjelp av avansert OCR. Med mobile løsninger kan de ansatte fotografere kvitteringer for umiddelbar behandling, og AI-systemer trekker automatisk ut informasjon om selger, dato, beløp og varedetaljer. Disse systemene kan automatisk kategorisere utgifter basert på leverandør og innhold, og verifisere samsvar med bedriftens retningslinjer i sanntid.

Behandling av bankdokumenter

Finansinstitusjoner utnytter OCR-kommentarer for å effektivisere prosesser som behandling av lånesøknader, ved automatisk å hente ut og validere informasjon fra skjemaer og støttedokumenter. Systemer for sjekkbehandling innhenter betalingsinformasjon fra sjekker for automatisk innskudd. Arbeidsflyter for kontoåpning trekker ut kundeinformasjon fra identifikasjonsdokumenter, noe som reduserer behandlingstiden med opptil 70 % og samtidig forbedrer nøyaktigheten.

Utarbeidelse av skattedokumenter

Regnskapsbyråer og leverandører av skatteprogramvare bruker OCR til behandling av skattedokumenter. Systemene gjenkjenner automatisk ulike typer skatteskjemaer (W-2, 1099 osv.), trekker ut relevant skatteinformasjon fra ulike skjemaer og kryssjekker informasjon på tvers av flere dokumenter. Denne automatiseringen reduserer tiden det tar å utarbeide skatteoppgjøret betydelig, samtidig som den minimerer transkripsjonsfeil som kan føre til problemer med etterlevelse av regelverket.

Hos Your Personal AI tilbyr vi spesialiserte annotasjonstjenester for hver av disse forretningsfunksjonene, og vi samarbeider med eksperter på finansdomenet for å sikre at annotasjonene oppfyller de spesifikke kravene til de ulike behandlingsapplikasjonene.

Konklusjon

OCR-annotasjon av høy kvalitet for finansdokumenter utgjør det kritiske fundamentet som effektive og nøyaktige automatiserte behandlingssystemer bygger på. Ved å ta tak i de unike utfordringene knyttet til variasjonen i finansdokumenter, implementere strenge annoteringsmetoder og utnytte ny teknologi kan organisasjoner oppnå betydelige forbedringer når det gjelder prosesseringseffektivitet, nøyaktighet og kostnadseffektivitet.

Effekten av høykvalitets annotasjon strekker seg gjennom hele organisasjonen - fra regnskapsteam som bruker mindre tid på manuell dataregistrering, til økonomiledere som får raskere tilgang til nøyaktig informasjon for å kunne ta beslutninger. Godt annoterte opplæringsdata muliggjør AI-systemer som ikke bare trekker ut grunnleggende informasjon, men som virkelig forstår strukturen og betydningen av økonomiske dokumenter.

Etter hvert som feltet fortsetter å utvikle seg, vil de organisasjonene som investerer i annoteringsrutiner av høy kvalitet i dag, være best posisjonert til å dra nytte av neste generasjons intelligente dokumentbehandlingsfunksjoner. Fremtidens finanssektor er automatisert, datadrevet og intelligent - og den begynner med å lære kunstig intelligens å lese finansielle dokumenter med forståelse på menneskelig nivå gjennom omhyggelig annotering.

Er du klar til å transformere din finansielle dokumentbehandling?

Få eksperthjelp med dokumentkommenteringsbehovene dine, og sett fart på organisasjonens reise mot intelligent automatisering med opplæringsdata av høy kvalitet.

Utforsk tjenestene våre

Din personlige AI-ekspertise innen kommentering av finansdokumenter

Your Personal AI (YPAI) tilbyr omfattende OCR-annotasjonstjenester for dokumenter som er spesielt utviklet for automatisering av finanssektoren. Med et team av erfarne annotatører som jobber sammen med eksperter på finansdomenet, leverer YPAI merkede datasett av høy kvalitet som fremskynder utviklingen av nøyaktige og pålitelige dokumentbehandlingssystemer.

Dokumentspesialiseringer

  • Faktura- og innkjøpsordreanmerkninger
  • Merking av kvitteringer og reiseregninger
  • Kartlegging av finansregnskapets struktur
  • Klassifisering av skattedokumentfelt
  • Annotasjon av kontrakter og juridiske dokumenter

Forretningsapplikasjoner

  • Automatisering av leverandørreskontroen
  • Løsninger for utgiftshåndtering
  • Behandling av bank- og lånedokumenter
  • Systemer for skatteforberedelser
  • Verifisering av overholdelse av regelverk

Kvalitetssikring

  • Verifiseringsprotokoller i flere trinn
  • Automatisert validering av beregninger
  • Konsistenskontroll av feltrelasjoner
  • Fullt samsvar med regelverket (GDPR, CCPA)
  • Detaljert rapportering av kvalitetsmålinger

YPAIs tjenester for dokumentkommentarer gir en kritisk fordel for utvikling av finansiell automatisering, noe som gir raskere time-to-market med algoritmer av høyere kvalitet. Vårt ekspertteam forstår både de tekniske kravene til dokumentannotasjon og den forretningsmessige konteksten som disse AI-systemene til slutt skal brukes i.

/* Base styles for OCR guide - fully encapsulated to avoid conflicts */ .ocr-guide-wrapper { --primary-color: #F59E0B; --primary-light: #FBBF24; --primary-lighter: #FCD34D; --primary-dark: #D97706; --secondary-color: #0EA5E9; --accent-color: #10B981; --dark-bg: #111827; --dark-bg-lighter: #1F2937; --dark-bg-lighter-2: #374151; --text-light: #F9FAFB; --text-muted: #9CA3AF; font-family: 'Inter', -apple-system, sans-serif; color: var(--text-light); line-height: 1.6; overflow-x: hidden; background-color: var(--dark-bg); position: relative; max-width: 100%; } /* Progress bar */ .ocr-progress-bar { position: fixed; top: 0; left: 0; height: 4px; background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); width: 0%; z-index: 999; } /* Back to top button */ .ocr-back-to-top { position: fixed; bottom: 20px; right: 20px; width: 40px; height: 40px; background: var(--primary-color); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; opacity: 0; visibility: hidden; z-index: 99; transition: all 0.3s ease; text-decoration: none; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .ocr-back-to-top.visible { opacity: 1; visibility: visible; } .ocr-back-to-top:hover { background: var(--primary-dark); transform: translateY(-3px); } /* Hero section */ .ocr-hero { background: linear-gradient(135deg, var(--dark-bg) 0%, var(--dark-bg-lighter) 100%); padding: 7rem 2rem 3rem; text-align: center; position: relative; overflow: hidden; } .ocr-hero::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(ellipse at top right, rgba(245, 158, 11, 0.3), rgba(17, 24, 39, 0) 70%), radial-gradient(ellipse at bottom left, rgba(14, 165, 233, 0.2), rgba(17, 24, 39, 0) 70%); } .ocr-hero::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(rgba(245, 158, 11, 0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(245, 158, 11, 0.05) 1px, transparent 1px); background-size: 30px 30px; opacity: 0.3; } .ocr-hero-content { position: relative; z-index: 3; max-width: 900px; margin: 0 auto; } .ocr-title { font-family: 'Poppins', 'Inter', sans-serif; font-size: 3rem; font-weight: 700; margin-bottom: 1.5rem; background: linear-gradient(90deg, white, var(--primary-lighter)); -webkit-background-clip: text; background-clip: text; color: transparent; line-height: 1.2; position: relative; display: inline-block; } .ocr-subtitle { font-size: 1.2rem; max-width: 800px; margin: 0 auto; color: var(--text-light); } /* Main content layout */ .ocr-main { display: flex; max-width: 1200px; margin: 0 auto; padding: 0 1rem; } .ocr-nav { width: 250px; padding: 2rem 1rem; position: sticky; top: 0; height: fit-content; background: var(--dark-bg); margin-top: -2rem; z-index: 10; } .ocr-nav-title { font-size: 1.2rem; margin-bottom: 1.5rem; color: var(--primary-lighter); font-weight: 600; } .ocr-nav-links { display: flex; flex-direction: column; gap: 0.75rem; } .ocr-nav-link { text-decoration: none; color: var(--text-muted); padding: 0.5rem 0.75rem; border-radius: 4px; transition: all 0.2s ease; font-size: 0.95rem; } .ocr-nav-link:hover, .ocr-nav-link.active { color: var(--primary-lighter); background: rgba(245, 158, 11, 0.1); } .ocr-content { flex: 1; padding: 2rem 1rem 2rem 2rem; } /* Section styles */ .ocr-section { margin-bottom: 4rem; animation: fadeIn 0.8s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .ocr-section-title { font-family: 'Poppins', 'Inter', sans-serif; font-size: 2.25rem; color: var(--primary-light); margin-bottom: 1.5rem; position: relative; font-weight: 700; line-height: 1.2; } .ocr-section-title::after { content: ''; position: absolute; bottom: -8px; left: 0; width: 60px; height: 3px; background: linear-gradient(90deg, var(--primary-light), transparent); border-radius: 1px; } .ocr-subsection-title { font-size: 1.5rem; color: var(--secondary-color); margin: 2.5rem 0 1rem; font-weight: 600; } /* Image containers */ .ocr-image-container { margin: 2rem 0; border-radius: 0.75rem; overflow: hidden; position: relative; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.2); background: var(--dark-bg-lighter); transition: transform 0.3s ease, box-shadow 0.3s ease; } .ocr-image-container:hover { transform: translateY(-5px); box-shadow: 0 15px 30px rgba(0, 0, 0, 0.3); } .ocr-image { width: 100%; height: auto; display: block; transition: transform 0.5s ease; } .ocr-image-container:hover .ocr-image { transform: scale(1.02); } .ocr-image-caption { position: absolute; bottom: 0; left: 0; width: 100%; background: rgba(17, 24, 39, 0.9); color: var(--text-light); padding: 0.75rem; font-size: 0.9rem; text-align: center; transform: translateY(100%); transition: transform 0.3s ease; } .ocr-image-container:hover .ocr-image-caption { transform: translateY(0); } /* Card grid */ .ocr-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; margin: 2rem 0; } .ocr-card { background: var(--dark-bg-lighter); border-radius: 0.75rem; padding: 1.5rem; transition: all 0.3s ease; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); border: 1px solid rgba(245, 158, 11, 0.1); height: 100%; display: flex; flex-direction: column; } .ocr-card:hover { transform: translateY(-8px); border-color: rgba(245, 158, 11, 0.3); box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15); } .ocr-card-icon { width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; color: var(--primary-lighter); background: rgba(245, 158, 11, 0.1); border-radius: 8px; transition: all 0.3s ease; } .ocr-card:hover .ocr-card-icon { transform: scale(1.1); background: rgba(245, 158, 11, 0.2); } .ocr-card-title { font-size: 1.25rem; margin-bottom: 0.75rem; color: var(--primary-light); font-weight: 600; } .ocr-card-text { color: var(--text-muted); font-size: 0.95rem; line-height: 1.6; } /* Techniques section */ .ocr-techniques { background: var(--dark-bg-lighter); border-radius: 0.75rem; padding: 1.5rem; margin: 2rem 0; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); border: 1px solid rgba(245, 158, 11, 0.1); } .ocr-technique { padding: 1rem 0; border-bottom: 1px solid rgba(245, 158, 11, 0.1); } .ocr-technique:last-child { border-bottom: none; } .ocr-technique h4 { font-size: 1.1rem; margin-bottom: 0.5rem; color: var(--primary-lighter); font-weight: 600; } .ocr-technique p { color: var(--text-muted); font-size: 0.95rem; } /* Lists */ .ocr-list { list-style-type: none; padding-left: 0.5rem; margin: 1.5rem 0; } .ocr-list li { position: relative; padding-left: 1.5rem; margin-bottom: 1rem; color: var(--text-muted); } .ocr-list li::before { content: "→"; position: absolute; left: 0; color: var(--primary-light); } .ocr-list li strong { color: var(--text-light); } /* Quote */ .ocr-quote { background: var(--dark-bg-lighter); border-radius: 0.75rem; padding: 2rem; margin: 2rem 0; position: relative; border-left: 4px solid var(--accent-color); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); } .ocr-quote::before { content: """; position: absolute; top: 10px; left: 10px; font-size: 5rem; font-family: Georgia, serif; color: var(--accent-color); opacity: 0.2; } .ocr-quote-text { font-style: italic; margin-bottom: 1rem; position: relative; z-index: 2; padding-left: 1rem; } .ocr-quote-author { text-align: right; color: var(--accent-color); font-weight: 600; font-size: 0.9rem; } /* Feature grid */ .ocr-feature-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; margin: 2rem 0; } .ocr-feature { background: var(--dark-bg-lighter); border-radius: 0.75rem; padding: 1.5rem; transition: all 0.3s ease; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); border: 1px solid rgba(245, 158, 11, 0.1); } .ocr-feature:hover { transform: translateY(-5px); border-color: rgba(245, 158, 11, 0.3); box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15); } .ocr-feature-title { font-size: 1.25rem; margin-bottom: 1rem; color: var(--primary-lighter); font-weight: 600; } .ocr-feature p { color: var(--text-muted); margin-bottom: 1rem; } .ocr-feature p:last-child { margin-bottom: 0; } /* Link styles */ .ocr-link { color: var(--secondary-color); text-decoration: none; font-weight: 600; transition: all 0.2s ease; border-bottom: 1px dotted var(--secondary-color); } .ocr-link:hover { color: var(--primary-lighter); border-color: var(--primary-lighter); } /* CTA */ .ocr-cta { background: linear-gradient(135deg, var(--primary-dark), var(--primary-color)); border-radius: 0.75rem; padding: 2.5rem 2rem; margin: 3rem 0; text-align: center; position: relative; overflow: hidden; } .ocr-cta::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: radial-gradient(circle at 20% 30%, rgba(245, 158, 11, 0.4) 0%, transparent 50%), radial-gradient(circle at 80% 70%, rgba(14, 165, 233, 0.4) 0%, transparent 50%); z-index: 1; } .ocr-cta-title { font-size: 1.8rem; color: white; margin-bottom: 1rem; position: relative; z-index: 2; font-weight: 700; } .ocr-cta-text { font-size: 1.1rem; margin-bottom: 2rem; position: relative; z-index: 2; color: rgba(255, 255, 255, 0.9); } /* Buttons */ .ocr-button { display: inline-block; padding: 0.75rem 1.5rem; background: var(--secondary-color); color: white; border-radius: 0.5rem; text-decoration: none; font-weight: 600; transition: all 0.3s ease; position: relative; z-index: 2; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border: none; cursor: pointer; } .ocr-button:hover { background: #0987c3; transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2); } .ocr-button-alt { background: var(--primary-color); } .ocr-button-alt:hover { background: var(--primary-dark); } /* Expertise section */ .ocr-expertise-section { background: linear-gradient(135deg, var(--dark-bg-lighter), var(--dark-bg)); border-radius: 0.75rem; padding: 2rem; border: 1px solid rgba(245, 158, 11, 0.2); } .ocr-expertise-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin: 2rem 0; } .ocr-expertise-card { background: rgba(31, 41, 55, 0.5); border-radius: 0.75rem; padding: 1.5rem; transition: all 0.3s ease; border: 1px solid rgba(245, 158, 11, 0.1); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); } .ocr-expertise-card:hover { transform: translateY(-5px); border-color: rgba(245, 158, 11, 0.3); box-shadow: 0 12px 30px rgba(0, 0, 0, 0.15); } .ocr-expertise-title { font-size: 1.25rem; margin-bottom: 1rem; color: var(--secondary-color); font-weight: 600; } .ocr-expertise-list { list-style: none; padding: 0; margin: 0; } .ocr-expertise-list li { position: relative; padding-left: 1.5rem; margin-bottom: 0.75rem; color: var(--text-muted); } .ocr-expertise-list li::before { content: "→"; position: absolute; left: 0; color: var(--primary-light); } /* Utility classes */ .ocr-text-center { text-align: center; } .ocr-mt-lg { margin-top: 2rem; } /* Footer */ .ocr-footer { background: var(--dark-bg-lighter); padding: 2rem 1rem; text-align: center; border-top: 1px solid rgba(245, 158, 11, 0.1); } .ocr-footer p { margin-bottom: 1rem; color: var(--text-muted); } .ocr-footer-links { display: flex; justify-content: center; flex-wrap: wrap; gap: 1rem; } .ocr-footer a { color: var(--primary-light); text-decoration: none; transition: color 0.3s ease; } .ocr-footer a:hover { color: var(--secondary-color); } .ocr-divider { color: var(--text-muted); } /* Responsive adjustments */ @media (max-width: 1024px) { .ocr-main { flex-direction: column; } .ocr-nav { width: 100%; position: relative; margin-bottom: 1rem; border-bottom: 1px solid rgba(245, 158, 11, 0.1); padding-bottom: 1rem; } .ocr-content { padding: 1rem; } } @media (max-width: 768px) { .ocr-title { font-size: 2.25rem; } .ocr-section-title { font-size: 1.8rem; } .ocr-nav-links { flex-direction: row; flex-wrap: wrap; gap: 0.5rem; } .ocr-nav-link { font-size: 0.8rem; padding: 0.4rem 0.6rem; } .ocr-card-grid { grid-template-columns: 1fr; } .ocr-expertise-grid { grid-template-columns: 1fr; } } @media (max-width: 480px) { .ocr-hero { padding: 5rem 1rem 2rem; } .ocr-title { font-size: 1.8rem; } .ocr-subtitle { font-size: 1rem; } .ocr-section-title { font-size: 1.5rem; } .ocr-subsection-title { font-size: 1.25rem; } .ocr-cta-title { font-size: 1.5rem; } .ocr-cta-text { font-size: 1rem; } } (function() { // Simple scroll progress tracker window.addEventListener('scroll', function() { // Progress bar var winScroll = document.body.scrollTop || document.documentElement.scrollTop; var height = document.documentElement.scrollHeight - document.documentElement.clientHeight; var scrolled = (winScroll / height) * 100; document.getElementById('ocrProgressBar').style.width = scrolled + '%'; // Show/hide back to top button var backToTop = document.getElementById('ocrBackToTop'); if (winScroll > 300) { backToTop.classList.add('visible'); } else { backToTop.classList.remove('visible'); } // Update active nav link var sections = document.querySelectorAll('.ocr-section'); var navLinks = document.querySelectorAll('.ocr-nav-link'); var currentSectionId = ''; sections.forEach(function(section) { var sectionTop = section.offsetTop - 100; if (winScroll >= sectionTop) { currentSectionId = section.getAttribute('id'); } }); navLinks.forEach(function(link) { link.classList.remove('active'); if (link.getAttribute('href') === '#' + currentSectionId) { link.classList.add('active'); } }); }); // Smooth scroll for anchor links document.querySelectorAll('a[href^="#ocr-"]').forEach(function(anchor) { anchor.addEventListener('click', function(e) { e.preventDefault(); var targetId = this.getAttribute('href'); var targetElement = document.querySelector(targetId); if (targetElement) { window.scrollTo({ top: targetElement.offsetTop - 80, behavior: 'smooth' }); } }); }); })();