Skillnad mellan versioner av "Liggaren inläsning"
Från wpu.nu
Rad 10: | Rad 10: | ||
Ett annat problem är maskningen. Den ställer till med problem på flera ställen. När tabellinjerna ska detekteras kan den förvilla. Om enstaka ord är maskade så ställer det till det för OCR-algoritmen eftersom den tappar linjen den ska läsa på. Jag använder dilation+erosion för att skapa en mask för att ta bort maskningen. Sedan detekteras konturer på maskningen för att avgöra dess position och storlek. När det är gjort ersätts den med 'XXXXX' som funkar bättre för OCR. | Ett annat problem är maskningen. Den ställer till med problem på flera ställen. När tabellinjerna ska detekteras kan den förvilla. Om enstaka ord är maskade så ställer det till det för OCR-algoritmen eftersom den tappar linjen den ska läsa på. Jag använder dilation+erosion för att skapa en mask för att ta bort maskningen. Sedan detekteras konturer på maskningen för att avgöra dess position och storlek. När det är gjort ersätts den med 'XXXXX' som funkar bättre för OCR. | ||
− | Trots detta är exaktheten inte tillfredsställande. För att öka den lite har jag tränat OCR-algoritmen (Tesseract 4) på liggaren för att den ska känna igen texten bättre, vilket den gör. Trots detta kommer texten ut med en del fel. Tex att vissa bokstäver ofta blir fel. A blir 4, I blir 1, rn blir m, osv. | + | Trots detta är exaktheten inte tillfredsställande. För att öka den lite har jag tränat OCR-algoritmen (Tesseract 4) på liggaren för att den ska känna igen texten bättre, vilket den gör. Trots detta kommer texten ut med en del fel. Tex att vissa bokstäver ofta blir fel. A blir 4, I blir 1, rn blir m, osv. Detta kan till viss del fixas med rättstavning. Det gäller om det är korrekt fritext för vilken det finns korrekta ord. Ofta är det bara korta anteckningar med förkortningar. Dessa kan visserligen läggas in i en egen ordlista för att kunna känna igen dem, men... pga de korta förkortningarna och OCR-felen kan det vara svårt att få rätt. tex "ANK" är det en felstavad version av "ANKN" eller "ANG", det beror på. Ser man ett uppslagsnummer är det ''förmodligen'' "ANKN". |
− | Detta gör också att vi har ett par hundra tusen celler | + | Detta gör också att vi har ett par hundra tusen celler som ska behandlas varje gång man kör igenom liggaren. Inte nog med att det behöver automatiseras. Det behöver kunna köras parallellt också på flera datorer med flera processorer. Jag har ett litet beräkningskluster här hemma, med några hundra CPU-kärnor, beroende på hur många datorer jag vill ha igång. På detta kan man köra igenom liggaren på några timmar. Men, resultatet är ännu ej tillfredsställande. |
Versionen från 23 september 2020 kl. 08.54
Hur går det med liggaren?
Framåt. Sakta.
Varför?
Dels handlar det om källmaterialet, dels om noggrannheten som krävs, dels om dokumentets storlek.
Tabeller är generellt svåra att översätta till text av lite olika anledningar. En sak är att textens position är viktig. Om tex en uppslagssiffra hamnar på fel rad blir informationen i stort sett oanvändbar. Tabellinjerna förvirrar också OCR-algoritmen. Därför behöver man "klippa ut" endast texten i varje cell och sedan visa den för OCR-algoritmen separat. För att göra det för ca 300 000 celler behöver man en automatisk lösning. Det måste också klippas ganska noga eftersom texten är mycket nära tabellinjerna i liggaren. Om man klipper för mycket så försvinner bokstäver, klipper man för lite kommer ramen tolkas som bokstäver.
Ett annat problem är maskningen. Den ställer till med problem på flera ställen. När tabellinjerna ska detekteras kan den förvilla. Om enstaka ord är maskade så ställer det till det för OCR-algoritmen eftersom den tappar linjen den ska läsa på. Jag använder dilation+erosion för att skapa en mask för att ta bort maskningen. Sedan detekteras konturer på maskningen för att avgöra dess position och storlek. När det är gjort ersätts den med 'XXXXX' som funkar bättre för OCR.
Trots detta är exaktheten inte tillfredsställande. För att öka den lite har jag tränat OCR-algoritmen (Tesseract 4) på liggaren för att den ska känna igen texten bättre, vilket den gör. Trots detta kommer texten ut med en del fel. Tex att vissa bokstäver ofta blir fel. A blir 4, I blir 1, rn blir m, osv. Detta kan till viss del fixas med rättstavning. Det gäller om det är korrekt fritext för vilken det finns korrekta ord. Ofta är det bara korta anteckningar med förkortningar. Dessa kan visserligen läggas in i en egen ordlista för att kunna känna igen dem, men... pga de korta förkortningarna och OCR-felen kan det vara svårt att få rätt. tex "ANK" är det en felstavad version av "ANKN" eller "ANG", det beror på. Ser man ett uppslagsnummer är det förmodligen "ANKN".
Detta gör också att vi har ett par hundra tusen celler som ska behandlas varje gång man kör igenom liggaren. Inte nog med att det behöver automatiseras. Det behöver kunna köras parallellt också på flera datorer med flera processorer. Jag har ett litet beräkningskluster här hemma, med några hundra CPU-kärnor, beroende på hur många datorer jag vill ha igång. På detta kan man köra igenom liggaren på några timmar. Men, resultatet är ännu ej tillfredsställande.