我尝试使用 R 中的 ocr tesseract 包从 png 图像中提取文本(如下)
文字大部分是西班牙语。这是我的代码:
library(tesseract)
#tesseract_download("spa") #download the Spanish train data if you haven't already
spanish <- tesseract("spa")
path_string <- "factura.png"
text <- ocr(path_string, engine = spanish)
cat(text)
但结果却令人失望。
ném…c……
…r …
nw£ccwm … m…… u
mmm …"
pz… u—=,:4| nm;
mmmnzvgm 3134
NUM“ vmnscwm
cuaw ……er
nmcmvcn4 c…r vum
£m|unmusnm . u7m
¡…una
suma… ……
ncm u|s
m:s .
mm u7m
cmmo 1240
nmrAm au…va m m
m.
515 mu .…
…
=mmnzmo
a… rn¿a> rc.¿… ……
u7m
Rm mmm… swmks
…… mmm
m…—
Guuumwsucmm
这个糟糕的结果是由于低 dpi 造成的吗?是否可以通过修改预处理来改善这一点?
对于每张收据,我真正需要的只是取出带有“equilibrio”一词的行项目及其右侧的值(在本例中为 41,760)。可以告诉 tesseract 只关注某些单词并提取数字吗?
我已经能够使用以下代码:
library(tesseract)
library(magick)
path_PDF <- "D:\\ymavy.pdf"
path_PNG <- "D:\\ymavy.png"
pdf(path_PDF, height = 12, width = 20)
im <- image_read(path_PNG)
plot(im)
dev.off()
text <- ocr(path_PDF)
strsplit(text, "\n")
[[1]]
[1] "Réginen Comun" "NIT: $000808S5S-4" "DIRECCION: Cra 68d#22b-71 L4" "TELEFONO 4059003-3023099514"
[5] "FECHA 18-aqg0.-78 13:03:29" "FACTURADE VENTA 312364" "NOMBRE VENTAS CONTADO" "CAJERO: ADMINISTRADOR"
[9] "DESCRIPCION CANT VALOR" "EQUILIBRIOGATO j 41.760" "FILHOTES" "SUBTOTAL 46,400"
[13] "DCTO. 4479" "ITEMS 1" "TOTAL 47,7650" "CAMBIO 8,240"
[17] "TARIFAIVA BASE GRAVABLE VR.IVA" "o% 0 0" "5% 39,771 1,888" "19% ) 0"
[21] "-ORMAS DE PAGO" "“fectwo T.Débao T.Crédao Cuenta" "47,760 0 0 0" "RESOL. FACTURACION SISTEMA POS"
[25] "I8762005857222 2017-11-27" "20086 al 1000000" "GRACIAS POR SU COMPRA"