将OCR信息添加到PDF


28

我的文件扫描质量很好;此类扫描为pdf格式。

如何将ocr信息添加到pdf中,以便可以搜索?可搜索的意思是目标是当您查看pdf时,CTRL-F实际上允许我搜索pdf内容。



4
@雅各布,我不认为这是一个骗子,我们在问不同的事情。另一个问题是关于从一些pdf中提取文本(即生成相应的txt文件),而我的问题是有关修改pdf以便添加ocr信息并使pdf阅读器中的搜索功能起作用。我会澄清这个问题。
fdierre 2012年

您如何以及用什么来扫描文档?
米奇

@米奇我用我的办公室理光Aficio MP-C2500打印机/复印机/扫描仪,它有一个非常好的文档进纸器。:-)
fdierre 2012年

扫描和/或OCR软件?
米奇

Answers:


21

pdf三明治

满足您的需求并提供Ubuntu deb软件包。它使用tesseract作为OCR引擎。以下调用将文本层添加到扫描的PDF中:

pdfsandwich scanned.pdf

以下操作相同,但使用另一种语言(ISO 639-2代码,下载tesseract-ocr-LANGCODE程序包)并设置布局:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

如果您遇到任何错误,请从Sourceforge下载最新版本的deb

免责声明:我是pdfsandwich的开发人员,因此显然有偏见。


6
真的很棒,谢谢。但是,它似乎在修改图像,看起来像在图像或其他物体上运行了不清晰的蒙版。有没有办法使图像与以前完全一样?在我的特定情况下,过滤器甚至设法从某些方程式的几个分数中去除了条形。不过,其他所有内容都运作良好...
naught101

质量不佳的软件包:`/tmp/pdfsandwich_0.1.3_amd64.deb的Lintian检查结果:E:pdfsandwich:control-file-has-bad-permissions md5sums 0664!= 0644 E:pdfsandwich:control-file-has-bad-owner md5sums james / james!=根目录/根目录E:pdfsandwich:错误的文件所有者uid或gid usr / 1000/1000 E:pdfsandwich:错误的文件所有者uid或gid usr / bin / 1000 / 1000 E:pdfsandwich:错误的文件所有者的uid-或-GID USR /斌/ pdfsandwich ...
AB

从SF下载最新版本的deb。如果最后出现错误,则可能与ghostscript(v0.1.4)有关。现在v0.1.6使用pdfunite
Pablo A

1
@PabloBianchi是否可以使用手动方式对OCRed文本进行校对 pdfsandwitch?我正在处理一些瑞典文档,并且效果很好,除了一些拼写错误(可能是由于原始字体引起的)之外,如果它是文本文件,则很容易修复,但是如何在生成的PDF中做到这一点?
zrajm

@zrajm,您可以使用一些pdfsandwich参数来更好地识别OCR步骤。要编辑PDF图像后的隐藏文本,您可以使用LibreOffice Draw,Inkscape或任何PDF编辑工具编辑文本框图层。如果您找到更好的方法,请在此处发布。天哪!
Pablo A


4

我发现了一个不理想的解决方案,但非常有效。

我通过Wine 使用PDF X-Change Viewer。它具有OCR功能,可在现有的基于图像的pdf中添加文本层。

因此,您可以搜索和复制此不可见图层中的文本。

在此处输入图片说明


2

对于命令行解决方案,可以使用pdfocr

简而言之,安装软件:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

然后运行pdfocr:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

在Ubuntu 12.04 LTS上对我有用。


6
Github在这里:github.com/gkovacs/pdfocr。但这具有与相同的问题pdfsandwich,因为它修改/压缩了包含高分辨率图像的PDF,从而基本上破坏了一些原始图像信息。
jmiserez

2

OCRmyPDF是一种易于实施的解决方案,可提供与输入文件相同质量且尺寸合理的输出pdf:

https://github.com/jbarlow83/OCRmyPDF


我的脚本效果很好。与Geza Kovacs的pdfocr不同,它不需要任何额外的库(在某些Linux发行版中很难编译!)。谢谢!
Maxim

0

这是我基于ImageMagick的快速和肮脏的解决方案converttesseractparallelpdftk(所有可用的基于Debian的发行版)。它主要基于此博客文章

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf

0

对于带有ppm文件的整个目录,可以使用此脚本ppm2ocrpdf.sh

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.