基于Python实现PDF区域文本提取工具

基于Python实现PDF区域文本提取工具,第1张

pre{overflow-x: auto} 功能简介 打开软件后界面如下:

点击打开文件按钮打开之前的PDF文件后效果如下:

框选区域后,标题栏会自动显示当前框选的区域提取到的文字,还可以左右按钮切换:

实际我们需要提取文字的区域可能不止这一个,所以程序支持多区域框选:

完成区域框选后就可以点击保存文件,将PDF每页提取到的文本保存到一个csv文件中,当前选区的保存结果如下:

可以看到已经按框选顺序依次保存了每一个区域的字符串。

如果选择区域时发现提取结果不准确,可以撤销后重新选择:

保存则会将PDF的每页的整体保存为一张,未选择区域时,以页码为文件名保存:

选择区域时,会自动提取最后一个区域提取的文本作为当前页的文件名:

开发代码

当然这个项目由于本人是一次使用wxpython,功能非常简约,现在将完整代码开源出来期待各位大佬的改进。

源码和已编译工具下载地址:

>

"""

draw elastic shapes on a canvas on drag, move on right click;

see canvasDraw_tagspy for extensions with tags and animation

"""

from tkinter import

trace = False

class CanvasEventsDemo:

def init (self, parent=None):

canvas = Canvas(width=300, height=300, bg='beige')

canvaspack()

canvasbind('<ButtonPress-1>', selfonStart) # click

canvasbind('<B1-Motion>', selfonGrow) # and drag

canvasbind('<Double-1>', selfonClear) # delete all

canvasbind('<ButtonPress-3>', selfonMove) # move latest

selfcanvas = canvas

selfdrawn = None

selfkinds = [canvascreate_oval, canvascreate_rectangle]

if name == ' main ':

CanvasEventsDemo()

mainloop()

from tkinter import

def onCanvasClick(event):

print('Got canvas click', eventx, eventy, eventwidget)

def onObjectClick(event):

print('Got object click', eventx, eventy, eventwidget, end=' ')

print(eventwidgetfind_closest(eventx, eventy)) # find text object's ID

root = Tk()

canv = Canvas(root, width=100, height=100)

obj1 = canvcreate_text(50, 30, text='Click me one')

obj2 = canvcreate_text(50, 70, text='Click me two')

canvbind('<Double-1>', onCanvasClick) # bind to whole canvas

canvtag_bind(obj1, '<Double-1>', onObjectClick) # bind to drawn item

canvtag_bind(obj2, '<Double-1>', onObjectClick) # a tag works here too

canvpack()

rootmainloop()

思路是这样的,把绘制的每个区域抽象成单独的对象,每个对象中可以储存各自的信息(比如title, content, position等),每个对象中都包含各自的判断点是否在当前对象区域内的判断函数,这样就可以知道点到了哪个对象,也可以拿到对象内的数据, 触发相应的事件。

这样说可能不太直观,你可以看一下我封装好的一个库。

>

以上就是关于基于Python实现PDF区域文本提取工具全部的内容,包括:基于Python实现PDF区域文本提取工具、python实现canvas点击多次点击、python canvas 拖拽和移动\事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9774429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存