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
使用 tesseract
和 pdf2image
从图像 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 作为输入的主要内容,如果未能解决你的问题,请参考以下文章
JAVA验证码识别:基于jTessBoxEditorFX和Tesseract-OCR训练样本