从图像中提取特定文本

时间:2020-06-29 20:23:27

标签: python node.js image-processing text

我正在尝试从图像中提取特定的(或整个文本,然后解析它)文本。 图片使用希伯来语语言。 我在nodejs中已经尝试过的方法正在Tesseract库中使用,但是在希伯来语中,它不能识别出正确的文本。 我也尝试过将图像转换为pdf,然后从pdf解析,但是在希伯来语中效果不佳。 有人已经尝试这样做吗?也许与python或节点js? 我正在尝试做类似云视觉的Google文字

2 个答案:

答案 0 :(得分:0)

您是否尝试过预处理输入到tesseract的图像?如果您没有,我会尝试使用OpenCV轮廓检测,尤其是Hough Line Transform,然后将其清理一下。 https://www.youtube.com/watch?v=lhMXDqQHf9g&list=PLQVvvaa0QuDeETZEOy4VdocT7TOjfSA8a&index=5这个家伙并没有完全做好您的工作,但是如果您花时间滚动一下,您会看到它如何有用。

答案 1 :(得分:0)

基于我们在OP中的对话。这是供您考虑的一些选项。

选项1:

如果您直接使用PDF作为输入文件

import fitz
input_file = '/path/to/your/pdfs/'
pdf_file = input_file

doc = fitz.open(pdf_file)
noOfPages = doc.pageCount

for pageNo in range(noOfPages):
    page = doc.loadPage(pageNo) 
    pageTextblocks = page.getText('blocks') # This creates a list of items (x0,y0,x1,y1,"line1\nline2\nline3...",...)
    pageTextblocks.sort(key=lambda block: block[3]) 
    for block in pageTextblocks:
        targetBlock = block[4] # This gets to the content of each block and you can work your logic here to get relevant data 

选项2:

如果您使用图像作为输入,并且需要使用选项1中的代码段将其转换为PDF,然后再进行处理。

doc = fitz.open(input_file)
pdfbytes = doc.convertToPDF() # open it as a pdf file
pdf = fitz.open("pdf", pdfbytes) # extract data as a pdf file

在PyMuPDF中处理图像的一个有用技巧是,如果图像难以识别,可以使用zoom因子以获得更好的分辨率。

zoom = 1.2 # scale the image by 120%
mat = fitz.Matrix(zoom,zoom)

选项3:

自从您提到tesseract以来,PyMuPDF和pytesseract的混合方法。我不确定这种方法是否适合您提取希伯来语的需求,但这是一个主意。该示例用于PDF。

import fitz
import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'/path/to/your/tesseract/cmd'
input_file = '/path/to/pdfs'

pdf_file = input_file
fullText = ""

doc = fitz.open(pdf_file)
zoom = 1.2
mat = fitz.Matrix(zoom, zoom)
noOfPages = doc.pageCount

for pageNo in range(noOfPages):
    page = doc.loadPage(pageNo) #number of page
    pix = page.getPixmap(matrix = mat)
    output = '/path/to/save/image' + str(pageNo) + '.jpg'
    pix.writePNG(output)
    print('Converting PDFs to Image ... ' + output)
    text_of_each_page = str(((pytesseract.image_to_string(Image.open(output)))))
    
    fullText += text_without_whitespace

    fullText += '\n'

希望这会有所帮助。如果您需要有关PyMuPDF的更多信息,请click this link,并提供更详细的说明以适合您的需求。

相关问题