AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 473843
Accepted
don.joey
don.joey
Asked: 2014-05-30 01:37:55 +0800 CST2014-05-30 01:37:55 +0800 CST 2014-05-30 01:37:55 +0800 CST

如何将 pdf 转换为可文本搜索的 pdf?

  • 772

我有许多 pdf 格式的扫描文档,我希望能够搜索它们。我怎样才能做到这一点?

本质上,我必须对 pdf 进行 OCR,然后将提取的文本混合回新的 pdf。我尝试了多种不同的解决方案(包括在将 OCR 信息添加到 PDF中找到的解决方案)均未成功。

  1. pdfocr(这给了我这个问题:https ://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich(其中软件中心说它是一个糟糕的包,我不应该安装它)
  3. OCRfeeder(在软件中心)很好地导出到 odt,但在导出到 pdf 时没有反应。
  4. Gscan2pdf导出全黑(但可搜索)图像,如本讨论中所报告的那样。
  5. 我不认为 Pdfxchange 查看器可以处理对超过 500 页的文件进行即时 ocr。

有没有我不知道的软件包?或者执行此操作的脚本?

software-recommendation
  • 7 7 个回答
  • 17802 Views

7 个回答

  • Voted
  1. Best Answer
    don.joey
    2014-05-31T00:20:34+08:002014-05-31T00:20:34+08:00

    从 Ubuntu 16.04 开始,OCRmyPDF 已通过 apt 可用。赶紧跑

    sudo apt install ocrmypdf
    ocrmypdf -h   # to see the usage
    

    最后,您可以使用以下命令对您的 pdf 进行 OCR:

    ocrmypdf input.pdf output.pdf  # change input and output to the files you want
    

    如果命令似乎没有响应,您可以使用-v标志(可以递增地用作-vv或-vvv)来增加详细程度。最好先在较短的 pdf 上测试结果。您可以按如下方式缩短 pdf:

    pdftk A=input.pdf cat A1-5 output output.pdf
    

    如果您有任何问题,请查看Github 存储库。

    • 29
  2. Ludenticus
    2017-02-12T13:05:18+08:002017-02-12T13:05:18+08:00

    @don.joey 用ocrmypdf脚本回答。不过现在可以直接安装了(16.10以后)。

    sudo apt install ocrmypdf
    

    然后你必须安装你需要的tesseract语言。

    要列出系统中已有的语言,请键入:

    tesseract --list-langs
    

    万一您错过了一个,请安装它。例如,

    sudo apt install tesseract-ocr-spa
    

    现在您可以使用以下命令生成可搜索的 PDF(其质量会有所不同,具体取决于扫描的文档)

    ocrmypdf -l 'spa' old.pdf new.pdf
    

    当然,您可以查看其手册页以了解一些其他选项。

    • 12
  3. Tobias Elze
    2014-07-25T06:29:12+08:002014-07-25T06:29:12+08:00

    pdfsandwich正是执行这项工作。我不知道软件中心提供了一个包,但我在项目网站上为它提供了 Ubuntu deb 包(有关详细信息,请参见http://www.tobias-elze.de/pdfsandwich/),包括目前最新的版本 (0.1.2),它不太可能出现在任何软件中心。

    如果您有扫描文件scanned_file.pdf,只需致电

    pdfsandwich scanned_file.pdf
    

    它生成的文件scanned_file_ocr.pdf将已识别的文本添加到扫描的页面中。

    与大多数现有解决方案相比,它会自动检测安装的 tesseract 版本并相应地调整其行为。此外,它在 OCR 过程之前对扫描图像进行预处理,例如去歪斜或去除暗边缘等,这可以大大提高光学字符识别。

    免责声明:我是 的开发者pdfsandwich,因此有很大的偏见。

    • 5
  4. Gabriel Staples
    2019-11-12T01:25:39+08:002019-11-12T01:25:39+08:00

    我遇到了同样的问题,所以我在周末写了这篇文章。试一试; 效果很好!它是一个简单的包装器tesseract。它用于pdftoppm将 PDF 转换为一堆 TIFF 文件,然后用于tesseract对它们执行 OCR(光学字符识别)并生成可搜索的 PDF 作为输出。脚本完成后,所有中间临时文件都会自动删除。

    源代码:https ://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

    安装和使用说明pdf2searchablepdf:

    2019 年 11 月 11 日在 Ubuntu 18.04 上测试。

    安装:

    git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
    ./PDF2SearchablePDF/install.sh
    sudo apt update
    sudo apt install tesseract-ocr
    

    利用:

    # General:
    pdf2searchablepdf [options] <input.pdf|dir_of_imgs> [lang]
    
    # Make a PDF searchable:
    pdf2searchablepdf mypdf.pdf
    
    # Make an entire directory of images into a single searchable PDF:
    pdf2searchablepdf directory_of_imgs
    

    您现在将拥有一个名为mypdf_searchable.pdf的 pdf ,其中包含可搜索的文本!

    完毕。包装器没有 python 依赖项,因为它目前完全用 bash 编写。

    参考资料或相关资源:

    1. PDF2SearchablePDF:https ://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
    2. 如何将 pdf 转换为可文本搜索的 pdf?
    3. 最好、最简单的 OCR 解决方案是什么?
    4. 从 PDF 中提取嵌入的图像
    5. pdfsandwich:我刚刚发现的替代软件包装器,也值得一试!http://www.tobias-elze.de/pdfsandwich/
    6. https://unix.stackexchange.com/questions/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
    7. [如何将 PDF 转换为一堆图像pdftoppm]从 PDF 中提取嵌入的图像
    • 3
  5. evaristegd
    2019-06-06T15:44:11+08:002019-06-06T15:44:11+08:00

    操作系统:Ubuntu 18.04

    首先,安装tesseract-ocr:

    apt-cache show tesseract-ocr
    sudo apt-get update && sudo apt-get upgrade
    apt-get install tesseract-ocr --print-uris
    apt-get install tesseract-ocr
    sudo !!
    

    如果你要使用 tesseract 以外的语言,那么你必须安装相应的 laguage 包。例如,对于葡萄牙语,您需要执行以下操作:

    sudo apt-get install tesseract-ocr-por
    

    否则你会得到错误:

    Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
    Please make sure the TESSDATA_PREFIX environment variable is set to your 
    "tessdata" directory.
    Failed loading language 'por'
    Tesseract couldn't load any languages!
    Could not initialize tesseract.
    

    如果你用谷歌搜索“tesseract PDF”,你可能会发现这篇有点过​​时的文章。但是,它会为您提供一些有用的提示。您首先必须将.pdf文件转换为.tiff一个。跑:

    convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff
    

    如果像在过时的帖子中一样,您忘记添加alpha -Off,您将收到以下错误:

    Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
    Error in pixReadFromTiffStream: spp not in set {1,3,4}
    

    现在您可以运行最终命令。在您的原始 PDF 是葡萄牙语的特殊情况下,您将需要此命令:

    tesseract -l por newfile.tiff output pdf 
    

    生成的文件将命名为output.pdf. 例如,如果您的 PDF 是法语的,那么在安装相应的 之后tesseract-ocr-fra,您将运行:

    tesseract -l fra newfile.tiff output pdf 
    

    并且所需的文件将再次是output.pdf.

    • 1
  6. AndreR
    2017-01-10T14:24:22+08:002017-01-10T14:24:22+08:00

    OCRfeeder有一个错误

    /usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py
    

    第 436 行应为:

                lines = asUnicode(stuff).strip().split('\n')
    # bug here, was:
    #            lines = '\n'.split(asUnicode(stuff).strip())
    

    改变了这个,它对我有用

    • 0
  7. BHARATH KUMAR N
    2021-10-13T03:04:15+08:002021-10-13T03:04:15+08:00

    从 Ubuntu 16.04 开始,OCRmyPDF 已经可以通过apt. 只需运行以下命令即可安装它:

    sudo apt install ocrmypdf
    

    您还可以运行此命令以查看其用法:

    ocrmypdf -h
    

    最后,您可以使用以下命令对 PDF 进行 OCR:

    ocrmypdf input.pdf output.pdf
    

    (更改input.pdf和output.pdf您想要的文件)

    • 0

相关问题

  • 有哪些科学绘图软件可用?

  • 最好的思维导图软件是什么?

  • 服务器的最佳rootkit删除工具?

  • 从 Ubuntu 连接到 Windows 的最佳远程桌面工具是什么?[关闭]

  • 是否有 Paint.NET 替代方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve