r-选择使用Tesseract OCR提取的部分文本



我在R中使用最新的Tesseract OCR引擎从几个图像中提取文本。它运行得很好,我对结果很满意。问题是,我不想要整个文本,只是部分,但我不知道如何提取它。

代码是这样的:

library("tesseract") 
library("pdftools")
library("magick")
mypdfFile<-"C:/Users/.../fileName.pdf"
mypngFile<-pdf_convert(mypdfFile, format="png", pages=1, dpi=600)
myImage<-image_read("fileName_1.png")
textFile<-ocr(myImage,engine = tesseract("spa"), HOCR = FALSE) # Text is in spanish
cat(textFile) 

现在,最终结果看起来像这个

bla bla bla bla bla bla 
bla text that I want to 
extract bla bla bla bla 
bla bla bla bla bla bla  

我如何获得我想要提取的文本

在应用ocr((函数之前,我尝试过裁剪图像,但只裁剪那部分是不可行的,也不太准确。ocr((返回纯文本。

下面的完整示例

图片(最初是一个pdf文件(是一张电费单。由于隐私问题,我无法完整提供,但它看起来像这个示例图像。在NOMBRE Y DIRECCION(名称和地址(下,应该有两行(一行有名称,另一行有地址(,后跟"GALEANA CENTRO LERDO.C.P."(城市名称(和"35150 LERDO,DGO."(邮政编码和州(。我的代码看起来像这个

myImage<-image_read("sampleImage.png")
myImage<-image_crop(myImage, new dimensions) #crop the right half and some from the top
textFile<-ocr(myImage,engine = tesseract("spa"), HOCR = FALSE) 
cat(textFile) 

我得到

Nombre y Domicilio
NAME REDACTED 
ADDRESS REDACTED
GALEANA CENTRO LERDO. C.P.
35150 LERDO, DGO.
Cuenta E Tarifa
30DC27B011164660 General < 25kW 02
AE A MA E
Num. de Lectura Lectura Mult. C
Medidor actual anterior
BD6687 40994 40539 1 ¿
Apoyo gubernamental

我只想从中提取"NAME REDACTED"one_answers"35150 LERDO,DGO"之间的所有内容。

如果您知道文本在哪里,可以先裁剪图像,也可以使用例如whitelist来限制tesseract要查找的内容,请参阅此处。


编辑:在注释之后,我们确实可以检索地址,这里使用逻辑"在提到"地址"的行之后的两行

text <- ("Nombre y Domicilio
NAME REDACTED 
ADDRESS REDACTED
GALEANA CENTRO LERDO. C.P.
35150 LERDO, DGO.
Cuenta E Tarifa
30DC27B011164660 General < 25kW 02
AE A MA E
Num. de Lectura Lectura Mult. C
Medidor actual anterior
BD6687 40994 40539 1 ¿
Apoyo gubernamental")
library(dplyr)
text2 <- strsplit(text, "n") %>% unlist()
addressline <- which(grepl("address", text2, ignore.case = T))
addresslines <- c(addressline+1:2)
address_extracted <- text2[addresslines]
address_extracted
[1] "GALEANA CENTRO LERDO. C.P." "35150 LERDO, DGO."  

最新更新