如何将纸质文档的照片转换为扫描文档?是相关的,但不一样,因为我在谈论 pdf 文件。在链接问题下的答案中,图像的处理似乎很复杂,特别是因为它涉及单独处理每个图像:鉴于我的 pdf 有数百页,我期望的解决方案不是处理/编辑图像,而只是扫描数码照片并以真实的方式记录。我的意思是类似于“虚拟扫描仪”的东西,其输入将是基于照片的 pdf 或照片集合,输出是“正常”扫描文档。(另外推荐的Scantailor工具 - 也在这里- 现在似乎缺少 Linux 版本。)
这与 OCR无关,也与将图像转换为文本无关。
为了澄清我的意思,我将发布一些示例。
有基于 text而非 image 的 pdf 文件,它们是导出为 pdf 的文本文件(比如说 docx 或 odt)。它们看起来可以打印了:
以上不是我在这里讨论的内容。
我感兴趣的是下面图片中的 pdf,即看起来太像图像的扫描文本页面和看起来像数字化文本的扫描文本页面之间的区别。
第一个是由看起来像书页照片的图像组成的:
或者
这样的副本很难在纸上重新打印,因为背景也会被打印出来。
第二个是人们对扫描文本的期望,并且可以打印:
或者
类似图片的 pdf 可能已经过 OCR 处理并且其文本可搜索,并且看起来仍然像(页面)照片的集合:OCR 不是这里的问题。
我想要的是“扫描”pdf的清晰黑白外观,并删除照片中正常但打印页面中不应该存在的所有“真实”细节(尤其是阴影)。
正如@vanadium 在评论中注意到的那样,我正在寻找一种能够自动清理文档图片的软件解决方案,就像智能手机上的 Google Scan 一样。
正如@user535733 在评论中所说,这里的问题似乎至少在某种程度上是将灰度(扫描/图像)文本转换为黑白的问题。
scantailor
不再维护,但您仍然可以从源代码构建并使用它。但是,原始存储库需要
qt4
,在最近的 Ubuntu 版本中不容易安装。你可以使用例如这个已经适应的叉子qt5
。先决条件:
安装:
免责声明:我不认识这个分叉的维护者,也不能说他版本的安全性。
另一种选择是使用Scantailor advanced。您可以通过
snap
...安装它...或flatpak。
...或通过ppa。
快速测试:
作为 PDF 的直接解决方案(无需手动提取图像):
用于恢复OCR (如本答案补充
ocrmypdf
部分末尾所述)我注意到显示的选项听起来与所要求的完全一样:ocrmypdf -h
最初的 pdf 已经有 OCR,除非使用以下选项之一,否则会出错:
或者
将每个单独应用到我的一个大文件中,其中一个包含数百页已经有 OCR 的页面会导致该过程崩溃。
在我看来,最好的解决方案是首先将初始文件(删除 OCR)打印为 pdf,然后执行
对于英语,
-l
不需要该选项。-v
用于终端中的详细信息。结果 pdf 大于输入(由于
--remove-background
选项):按如下所述减小大小。关于 Scan Tailor,作为主要答案的补充
甚至它的图标也说明了一个事实,即它完全适用于此处所要求的内容:
以下是如何将 Scan Tailor 与 pdf 一起使用:
pdftoppm MY_PDF.pdf NAME -tiff
- 如此处所述。— 可以使用其他变量来代替tiff
(提供tif
文件),例如png
orjpeg
。请参阅此处的一组 Dolphin 服务菜单操作,了解各种提取选项:tif
文件是否符合您的要求。)有很多方法可以创建新的 pdf。同样,我很快尝试过的 GUI 工具崩溃或给出了奇怪的结果,所以我更喜欢将生成的tif
文件放在一个单独的文件夹中,然后运行命令img2pdf *.tif -o out.pdf
- 如此处所述。(这可能需要对文件进行正确的命名/编号。更多信息请点击此处。)生成的“定制” pdf 将小于初始 PDF,但缩小的百分比取决于我忽略的因素(但我想应该在步骤 1 中提取初始 pdf 中包含的页面)他们已经拥有的格式;我认为
jpeg
并且tif
应该使用而不是png
;在使用pdfimages -list your.pdf
上面和下面的命令进行处理之前,在终端中使用以查看有关格式、dpi 和其他详细信息的详细信息)。可以使用以下命令进一步减少最终的 pdf:
更多详细信息,请点击此处。
以下是基于上述链接的一组 Dolphin 服务菜单操作:
我也从这个答案中得到了一些帮助。
OCR (text search and copy capability) is lost during the above procedure, if present in the initial pdf. In order to get OCR, use
ocrmypdf input.pdf output.pdf
for English, as said here. For other languages, look for them withapt-cache search tesseract-ocr
, and install them. Add-l <LANG>
at the end of the command for specific languages; more here; see their names also here.Here is a Dolphin service menu action for Romanian OCR with two options (one with progress in terminal and fixed output name, the other with background process but with output name based on input; I would like to have both process in terminal and output name based on input but don't know how; if someone can do it, please post here!). For English, replace "Romanian" and remove the
-l ron
variable:(Extracting and processing images, as well as 'printing as pdf' removes OCR, but reducing size with ghostscript as above does not, so the "shrinking" can be applied before or after the OCR.)
使用 imageMagick 和以下脚本http://www.fmwconcepts.com/imagemagick/shadowhighlight/index.php我得到了很好的结果
这是使用以下参数的结果:
Just install Gimp(preferably use appimage). Following are the options:
Second option 2) Select Image>Mode>Indexed>Use black and white 1 bit palette
Any number of pages your pdf may have this will convert all to 1 bit Black and White.
Edit on 02/11/2021: As per query raised by cipiricus
Here are steps that I follow: