亚洲精品国产精品乱码视色,下载应用成人电影AVapp,成人影院下载视频

      <track id="gfhue"><i id="gfhue"></i></track><input id="gfhue"></input>

      1. 更多精彩內(nèi)容,歡迎關(guān)注:

        視頻號
        視頻號

        抖音
        抖音

        快手
        快手

        微博
        微博

        基于Python實(shí)現(xiàn)PDF區(qū)域文本提取工具

        文檔

        基于Python實(shí)現(xiàn)PDF區(qū)域文本提取工具

        這篇文章主要為大家介紹了如何通過Python實(shí)現(xiàn)一個非常精簡的圖像化的PDF區(qū)域選擇提取工具,文中示例代碼講解詳細(xì),希望對大家能有所幫助。
        推薦度:
        導(dǎo)讀這篇文章主要為大家介紹了如何通過Python實(shí)現(xiàn)一個非常精簡的圖像化的PDF區(qū)域選擇提取工具,文中示例代碼講解詳細(xì),希望對大家能有所幫助。
        功能簡介

        打開軟件后界面如下:

        點(diǎn)擊打開文件按鈕打開之前的PDF文件后效果如下:

        框選區(qū)域后,標(biāo)題欄會自動顯示當(dāng)前框選的區(qū)域提取到的文字,還可以左右按鈕切換:

        實(shí)際我們需要提取文字的區(qū)域可能不止這一個,所以程序支持多區(qū)域框選:

        完成區(qū)域框選后就可以點(diǎn)擊保存文件,將PDF每頁提取到的文本保存到一個csv文件中,當(dāng)前選區(qū)的保存結(jié)果如下:

        可以看到已經(jīng)按框選順序依次保存了每一個區(qū)域的字符串。

        如果選擇區(qū)域時發(fā)現(xiàn)提取結(jié)果不準(zhǔn)確,可以撤銷后重新選擇:

        保存圖片則會將PDF的每頁的整體保存為一張圖片,未選擇區(qū)域時,以頁碼為文件名保存圖片:

        選擇區(qū)域時,會自動提取最后一個區(qū)域提取的文本作為當(dāng)前頁的文件名:

        開發(fā)代碼

        當(dāng)然這個項(xiàng)目由于本人是一次使用wxpython,功能非常簡約,現(xiàn)在將完整代碼開源出來期待各位大佬的改進(jìn)。

        源碼和已編譯工具下載地址:

        https://codechina.csdn.net/as604049322/python_gui

        完整代碼:

        """
        小小明的代碼
        CSDN主頁:https://blog.csdn.net/as604049322
        """
        __author__?=?'小小明'
        __time__?=?'2021/11/24'
        
        import?csv
        
        import?wx
        import?os
        import?fitz
        
        
        class?MyCanvas(wx.Panel):
        ????def?__init__(self,?parent):
        ????????wx.Panel.__init__(self,?parent)
        ????????self.parent?=?parent
        ????????self.rects?=?[]
        ????????self.Bind(wx.EVT_LEFT_DOWN,?self.OnLeftButtonEvent)
        ????????self.Bind(wx.EVT_LEFT_UP,?self.OnLeftButtonEvent)
        ????????self.Bind(wx.EVT_MOTION,?self.OnLeftButtonEvent)
        ????????self.Bind(wx.EVT_PAINT,?self.DoDrawing)
        ????????b?=?wx.Button(self,?-1,?"打開文件",?(0,?0))
        ????????self.Bind(wx.EVT_BUTTON,?self.OnButton,?b)
        ????????b?=?wx.Button(self,?-1,?"保存文件",?(75,?0))
        ????????self.Bind(wx.EVT_BUTTON,?self.save_file,?b)
        ????????b?=?wx.Button(self,?-1,?"保存圖片",?(150,?0))
        ????????self.Bind(wx.EVT_BUTTON,?self.save_img,?b)
        ????????b?=?wx.Button(self,?-1,?"撤銷選區(qū)",?(225,?0))
        ????????self.Bind(wx.EVT_BUTTON,?self.back_select,?b)
        
        ????????b?=?wx.Button(self,?-1,?"《",?(300,?0),?size=(25,?25))
        ????????self.Bind(wx.EVT_BUTTON,?self.previous,?b)
        ????????b?=?wx.Button(self,?-1,?"》",?(325,?0),?size=(25,?25))
        ????????self.Bind(wx.EVT_BUTTON,?self.next,?b)
        
        ????????self.g1?=?wx.Gauge(self,?-1,?100,?(0,?30),?(-1,?100),?wx.GA_VERTICAL)
        
        ????def?previous(self,?evt):
        ????????if?not?hasattr(self,?"pdfDoc"):
        ????????????return
        ????????if?self.i?>?0:
        ????????????self.i?-=?1
        ????????????self.change_pdf_page(self.i,?False)
        ????????????self.DoDrawing(-1)
        ????????????if?self.rects:
        ????????????????self.parent.SetTitle(self.path?+?"|"?+?self.extract_pdf_text())
        
        ????def?next(self,?evt):
        ????????if?not?hasattr(self,?"pdfDoc"):
        ????????????return
        ????????if?self.i?3d}"
        ????????????????pix.save(f"{path}/{name}.png")
        ????????????????self.g1.SetValue((i?+?1)?*?100?//?self.pdfDoc.pageCount)
        ????????dlg.Destroy()
        ????????os.system(f"explorer?{path}")
        
        ????def?save_file(self,?evt):
        ????????if?not?hasattr(self,?"pdfDoc"):
        ????????????return
        ????????path?=?self.save_FileDialog()
        ????????if?path?is?None:
        ????????????return
        ????????data?=?[]
        ????????for?i?in?range(self.pdfDoc.pageCount):
        ????????????page?=?self.pdfDoc[i]
        ????????????row?=?[self.extract_pdf_text(page,?rect)
        ???????????????????for?i,?rect?in?enumerate(self.rects)]
        ????????????data.append(row)
        ????????with?open(path,?"w")?as?f:
        ????????????writer?=?csv.writer(f,?lineterminator="\n")
        ????????????row?=?[f"區(qū)域{i}"?for?i?in?range(1,?len(row)?+?1)]
        ????????????writer.writerow(row)
        ????????????for?row?in?data:
        ????????????????writer.writerow(row)
        ????????os.system(f"cmd?/c?start?{path}")
        
        ????def?extract_pdf_text(self,?page=None,?rect=None):
        ????????if?page?is?None:
        ????????????page?=?self.pdfDoc[self.i]
        ????????if?rect?is?None:
        ????????????rect?=?self.rects[-1]
        ????????a,?b,?c,?d?=?rect
        ????????clip?=?fitz.Rect(a,?b,?a?+?c,?b?+?d)
        ????????text?=?page.get_text(clip=clip).strip()
        ????????return?text
        
        ????def?change_img(self,?img_path,?move=True):
        ????????self.bmp?=?wx.Bitmap(img_path)
        ????????self.SetSize(self.bmp.GetSize())
        ????????self.parent.SetSize(self.parent.GetBestSize())
        ????????if?move:
        ????????????self.parent.Center()
        
        ????def?DoDrawing(self,?evt):
        ????????if?not?hasattr(self,?"bmp"):
        ????????????return
        ????????dc?=?wx.ClientDC(self)
        ????????dc.DrawBitmap(self.bmp,?0,?0,?True)
        ????????dc.SetPen(wx.Pen('blue'))
        ????????dc.SetBrush(wx.Brush('white',?wx.BRUSHSTYLE_TRANSPARENT))
        ????????dc.DrawRectangleList(self.rects)
        
        ????def?OnLeftButtonEvent(self,?event):
        ????????if?event.LeftDown():
        ????????????self.x,?self.y?=?event.GetPosition()
        ????????????self.rects.append([self.x,?self.y,?0,?0])
        ????????elif?event.Dragging():
        ????????????x,?y?=?event.GetPosition()
        ????????????self.rects[-1][2]?=?x?-?self.x
        ????????????self.rects[-1][3]?=?y?-?self.y
        ????????????self.DoDrawing(-1)
        ????????elif?event.LeftUp():
        ????????????print(self.rects)
        ????????????if?self.rects[-1][2]?

        文檔

        基于Python實(shí)現(xiàn)PDF區(qū)域文本提取工具

        這篇文章主要為大家介紹了如何通過Python實(shí)現(xiàn)一個非常精簡的圖像化的PDF區(qū)域選擇提取工具,文中示例代碼講解詳細(xì),希望對大家能有所幫助。
        推薦度:
        為你推薦
        資訊專欄
        熱門視頻
        相關(guān)推薦
        詳解python的循環(huán) python實(shí)現(xiàn)新年倒計時實(shí)例代碼 Python實(shí)現(xiàn)消消樂小游戲 分享15個超級好用得Python實(shí)用技巧 學(xué)習(xí)python的while循環(huán)嵌套 提升Python運(yùn)行速度的5個小技巧 Python按鍵或值對字典進(jìn)行排序 圖像檢索之基于vlfeat實(shí)現(xiàn)SIFT特征 python繪圖中的四個繪圖技巧 js中toString方法3個作用 描寫春天花朵的詩句 關(guān)于思念的詩句 帶馬字的詩句 牡丹花的詩句 想念的詩句 含雁的詩句 愁的詩句 珍惜時間的名言 清明節(jié)的諺語 關(guān)于清明的諺語 Python數(shù)據(jù)分析處理(三)--運(yùn)動員信息的分組與聚合 Python實(shí)現(xiàn)城市公交網(wǎng)絡(luò)分析與可視化 Python&nbsp;垃圾回收機(jī)制詳解 關(guān)于樹的詩句 緬懷親人的詩句 春暖花開的詩句 家國情懷的詩句 含有星字的詩句 用來贊美老師的詩句 看破紅塵的經(jīng)典詩句 長江的詩句 關(guān)于傳統(tǒng)節(jié)日的詩句 三月桃花的詩句 夕陽的詩句 紀(jì)念烈士的詩句 西湖的詩句 贊美虎的詩句 與蓮有關(guān)的詩句 梅蘭竹菊的詩句 描寫山的詩句有哪些
        Top