PDF表单字段操作

9 投票
6 回答
4718 浏览
提问于 2025-04-15 21:18

我正在制作一个网页界面,用来自动填充PDF表单,数据来自数据库。管理员需要能够上传一个PDF文件(目前主要是针对IRS的PDF表单),然后将PDF中的字段与数据库中的数据字段关联起来。

我需要一种方法来帮助管理员将字段名称(比如“topmostSubform[0].Page2[0].p2-t66[0]”)与数据库中的数据字段关联。我在寻找一种方法,可以通过编程的方式修改PDF,以某种方式提供这些信息。

简单来说,我希望能找到一些建议,让字段名称在修改后的PDF中明显显示出来。我目前能做到的就是通过逐行编辑原始PDF,向字段中插入提示信息(Tooltips)。不过,这种方式编辑后字段名称变得很难理解,所以我不能直接使用它们。

一个理想的解决方案是能够自动解析PDF,并将每个字段的提示信息设置为字段名称的任何工具。如果有可以从命令行运行的工具,或者任何Python工具,或者只是一些关于如何正确解析原始PDF文件中字段名称的基本方法,那就太好了。

6 个回答

0

这可能和你想做的事情有点偏离,但值得考虑一下。我一直在把扫描的结构化文档转化为Django模型实例。通过使用tesseract和unpaper进行预处理和光学字符识别(OCR),我得到了超过99%的准确率。这让我可以用Levenshteinre模块来解析OCR输出的文本,然后简单地创建一个新的实例,比如new_instance = MyModel(parsed1, parsed2, ...)

看起来你也在尝试做类似的事情。看看这个网站上的表单:http://www.irs.gov/formspubs/,这些表单通常在字段旁边有文本标签。使用像py-tesseract这样的工具,你应该能够识别这些标签的文字,把识别出来的文字覆盖在表单图片上,并允许用户选择或编辑这些字段标签。

还有一个不错的小工具,叫做ocrfeeder,你可以在这里找到它:https://live.gnome.org/OCRFeeder。这个工具是用Python写的,可以给你一个关于这个过程在桌面应用中如何工作的基本概念。祝你好运。

0

这里有一个PostScript解析器:https://github.com/haxwithaxe/py-ps-parser

我一直想试试这个东西,但还没动手。

0

可能有更简单的解决办法,但你完全可以使用 ReportLab 来完成这个任务。

如果你能把当前的税表保存成一张图片,你就可以找出每个项目应该写在哪里,然后编写代码,让它自动把数据库里的相应值叠加到这张图片上(比如税表,或者其他的东西)。

一旦你确定了 1) 需要从数据库中提取哪些字段,以及 2) 它们应该放在表单的哪个位置……

你基本上就是在做这些事情:

from reportlab.pdfgen import canvas 

report_string_values = ['Alex',500,500],['Guido',400,400],
c = canvas.Canvas('hello.pdf')
c.drawImage(background_image,x_pos,y_pos) # x_pos and w_pos are # pixels from bl origin
for rsv in report_string_values:  
    c.drawString(rsv.x_pos,rsv.,rsv.text) 
c.showPage()
c.save()

撰写回答