R语言将扫描版PDF转换为可搜索PDF的实现方法咨询
实现生成可搜索PDF的第三步
你无需手动解析ocr_data返回的坐标结果自行拼接文本层,tesseract包已内置直接输出可搜索PDF的封装函数ocr_pdf(),直接调用即可完成需求,示例代码如下:
library(tesseract) # 下载示例扫描PDF download.file("https://www.fujitsu.com/global/Images/sv600_c_automatic.pdf", "example.pdf", mode = "wb") # 直接输出可搜索PDF,最终生成文件为 example_ocr.pdf ocr_pdf( input = "example.pdf", output = "example_ocr", engine = tesseract(language = "eng") )
如果你的场景确实需要基于现有results中的bbox坐标手动生成文本层,可以将bbox按逗号拆分为左、上、右、下四个像素坐标,配合magick、grid、pdftools包逐页将文字绘制到对应位置后导出PDF,普通场景下不推荐这种重复造轮子的操作。
Windows环境下其他可选相关工具
- R包类
magick:可用于扫描PDF的预处理,支持旋转、降噪、裁剪、调整对比度等操作,处理后再喂给OCR工具可大幅提升识别准确率ocrmypdf:是Python OCR工具ocrmypdf的R封装,需提前安装对应Python依赖,支持自动纠偏、去黑边、优化PDF体积,输出的可搜索PDF质量比tesseract原生输出更高
- 命令行工具类
- Tesseract CLI:安装Windows版的tesseract命令行工具后,可在R中通过
system()函数调用批量处理,适合大体积批量文件的处理场景,运行效率高于纯R接口 - Ghostscript:可用于OCR输出后PDF的压缩、拆分、合并操作,同样可通过R的
system()调用
- Tesseract CLI:安装Windows版的tesseract命令行工具后,可在R中通过
内容的提问来源于stack exchange,提问作者Thomas Speidel
相关产品推荐
相关产品推荐

