繁体   English   中英

如何使用 Python 中的 tesseract 获得图像中最大的文本?

[英]How do I get the largest text in an image using tesseract in Python?

我正在尝试提取 PDF 文件的标题。 文件的元数据并没有真正的帮助。 所以我正在考虑将每个 PDF 文件的第一页转换为图像并使用 Tesseract 读取此图像。 我可以假设在图像上找到的最大文本是标题。

我使用fitz读取 PDF 并加载要存储为图像格式的第一页。

import fitz

doc = fitz.open(filename)
page = doc.loadPage(0)
pix = page.getPixmap()
pix.writePNG("output.png")

然后我使用 OpenCV 读取图像文件,将其放入 tesseract 中,并将边界框放在检测到的单词上。

filename = 'output.png'

img = cv2.imread(filename)
h, w, _ = img.shape

boxes = pytesseract.image_to_boxes(img) # also include any config options you use

for b in boxes.splitlines():
    b = b.split(' ')
    img = cv2.rectangle(img, (int(b[1]), h - int(b[2])), (int(b[3]), h - int(b[4])), (0, 255, 0), 2)

cv2.imshow(filename, img)
cv2.waitKey(0)

我对 OCR tesseract不是很熟悉,所以这就是我卡住的地方。 如何获得具有最大边界框的文本?

我的 PDF 文件主要是科学论文/期刊。 这样你就知道我的文件是什么样子了。

谢谢你。

通常 Tesseract 将 OCR 操作结果作为嵌套结构返回,如下所示:

  • 堵塞
    • 线条
        • 字符(仅在 Tesseract 3 中,对于 Tesseract 4,您只有单词框)

使用pytesseract.image_to_data你应该得到关于行/单词索引的数据。

我的建议是 go 通过每一行的单词,找到平均词高最大的行,这很可能是论文的标题。

请参阅此答案以查看如何获取单词框

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM