ios - VNDocumentCameraScan 到可搜索的 PDF
问题描述
我目前正在尝试PDFDocument
在VNDocumentCameraScan
.VNDocumentCameraViewController
目前我只拍摄扫描图像并将它们放入一个PDFDocument
实例中。
func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
let pdf = createPDF(from: scan)
}
fileprivate func createPDF(from scan: VNDocumentCameraScan) -> PDFDocument {
let pdfDocument = PDFDocument()
for i in 0 ..< scan.pageCount {
let pdfPage = PDFPage(image: scan.imageOfPage(at: i))
pdfDocument.insert(pdfPage!, at: i)
}
return pdfDocument
}
我也知道如何从VNDocumentCameraScan
. 我想念的是如何将文本信息合并到PDFDocument
实例中。我需要这个,因为我想扫描文档,将它们保存.pdf
到文件系统中,然后再搜索它们。
我搜索了很多,但没有找到一种方法来做到这一点。
有谁知道我将如何做到这一点?
解决方案
这篇博文详细介绍了该主题。我正在链接到系列的第 3 部分,因为它解决了您所坚持的过程部分。
https://alexanderweiss.dev/blog/2021-03-29-from-uiimage-to-searchable-pdf-part-3
主要思想是在 pdf 中的图像下方绘制已识别的文本。文章中的基本步骤:
- 拍摄图像
- 识别图片上的文字
- 创建具有图像尺寸的 PDF 页面
- 使用识别的文本绘制文本
- 在pdf上的文字上方绘制图像
VNRecognizedText 包含有关已识别文本位置的信息,可让您确定在何处绘制文本。我能够在我的应用程序中成功使用这篇文章中的代码;尽管在处理手写文本时它不是 100% 完美,但它的效果相当不错。
推荐阅读
- css - 即使不透明度发生变化,CSS 过渡也不适用于元素
- r - 基于R数据帧中匹配的时间戳转置数据
- discord - if(!message.member.hasPermissions("MANAGE_MESSAGES")) 不工作
- flutter - 从一个活动移动到另一个活动时,颤动如何使底部导航栏保持不变
- java - 尝试在我的 android 应用程序中显示步骤数
- kubernetes - glusterfs、heketi 和 kubernetes 自动配置问题
- r - 如何将前导零添加到列中的单个数字行?
- javascript - 我可以在 React 中动态创建状态变量吗?
- reactjs - React setState is not a function upon adding JSON?
- java - List.add(list) 和 List.add(stringbuilder.toString) 的区别