Tesseract ocr PDF 作为输入

Posted

技术标签:

【中文标题】Tesseract ocr PDF 作为输入【英文标题】:Tesseract ocr PDF as input 【发布时间】:2015-06-21 19:51:57 【问题描述】:

我正在构建一个 OCR 项目,并且我正在为 Tesseract 使用 .Net 包装器。包装器的示例没有显示如何处理 PDF 作为输入。使用 PDF 作为输入如何使用 c# 生成可搜索的 PDF?

我使用 ghostscript 库将 Pdf 更改为图像,然后用它提供 Tesseract,它在获取文本时效果很好,但我没有保存 Pdf 的原始形状,我只获取文本

如何通过保存原始 Pdf 的形状从 Pdf 中获取文本

这是一个来自 pdf 的页面,我不想要只有文本,我希望文本的形状像原始 pdf 一样,抱歉英语不好

【问题讨论】:

您需要一个库来将 PDF 转换为 Image。然后使用同一个库创建可搜索的 PDF。 哪个库最适合这项工作,您能否为我提供一个如何执行此操作的示例.. 我想保存原始 pdf 的形状并在其下添加文本层 @朱哈尔 删除了不必要的信息,将外部链接内联并修复了语法。这个问题需要“您尝试过的内容”(就实际代码而言),否则可能会被否决或被关闭。 【参考方案1】:

仅出于文档原因,以下是 OCR 使用 tesseractpdf2image 从图像 pdf 中提取文本的示例。

import pdf2image
try:
    from PIL import Image
except ImportError:
    import Image
import pytesseract


def pdf_to_img(pdf_file):
    return pdf2image.convert_from_path(pdf_file)


def ocr_core(file):
    text = pytesseract.image_to_string(file)
    return text


def print_pages(pdf_file):
    images = pdf_to_img(pdf_file)
    for pg, img in enumerate(images):
        print(ocr_core(img))


print_pages('sample.pdf')

【讨论】:

记住如果你想改变语言,你只需要改变这行代码:text = pytesseract.image_to_string(file, lang='bul')在我的例子中是保加利亚语。另请查看此帖子以获取更多信息:***.com/questions/44691829/…【参考方案2】:

有一个方便的工具OCRmyPDF 可以在扫描的 PDF 中添加一个文本层,使其可搜索 - 这基本上可以自动执行前面答案中提到的步骤。

【讨论】:

你的工具正是我需要的!【参考方案3】:

Tesseract 从 3.0 版本开始支持创建三明治。但此功能推荐使用 3.02 或 3.03。 Pdfsandwich 是一个脚本,可以或多或少地执行您想要的操作。

有在线服务www.sandwichpdf.com,它确实使用 tesseract 创建可搜索的 PDF。在开始使用 tesseract 实施解决方案之前,您可能需要运行一些测试。结果还可以,但是有些商业产品可以提供更好的结果。 披露:我是www.sandwichpdf.com的创建者。

【讨论】:

tobltobs 谢谢你做了 pdfsandwich 支持 windows,因为我在 windows 7 64 位中使用 Visual Studio 2010 进行编码【参考方案4】:

使用pdf2png.com,然后上传你的pdf,然后它会将每个页面的所有png文件在<pdf_name>-<page_number>.png文件中作为.zip文件,

然后,你可以编写简单的python代码为

#/usr/bin/python3
#coding:utf-8
import os
pdf_name = 'pdf_name'
language = 'language of tesseract'
for x in range(int('number of pdf_pages')):
    cmd = f'tesseract pdf_mame-x.png x -l language'
    os.system(cmd)

然后,读取所有文件,例如从 1.txt 一直向上,并附加到单个文件,就这么简单。

【讨论】:

以上是关于Tesseract ocr PDF 作为输入的主要内容,如果未能解决你的问题,请参考以下文章

OCR Tesseract 只设置数字

JAVA验证码识别:基于jTessBoxEditorFX和Tesseract-OCR训练样本

有用过tesseract OCR字符识别的吗?怎么识别率那么低

基于Python实现对PDF文件的OCR识别

如何加速 tesseract OCR

用 R 做 OCR