国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)

這篇具有很好參考價值的文章主要介紹了????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

首先,大家對Python語法的了解已經(jīng)基本完成,現(xiàn)在我們需要開始進行各種練習。我為大家準備了一些練習題目,比如之前的向量數(shù)據(jù)庫等,這些題目可以參考第三方的SDK來進行操作,文檔也是比較完善的。這個過程有點像我們之前使用Java對接第三方接口的方式,所以今天我想開發(fā)一個很實用的工具類,用于將PDF轉(zhuǎn)換為DOCX文檔。我覺得這個工具非常實用,所以通過這個項目,我想帶領(lǐng)那些在Python基礎(chǔ)上還比較薄弱的同學(xué)們從零開始,一起完成這個項目。

首先,我也剛開始接觸這個項目,所以我并不知道如何實現(xiàn)。我的第一反應(yīng)是去搜索引擎上查找是否有其他人已經(jīng)實現(xiàn)了類似的功能,因為現(xiàn)在有很多優(yōu)秀的開源項目可供參考。畢竟,站在巨人的肩膀上進行開發(fā)并不可恥,而是一種聰明的做法。

幸運的是,我找到了一個名為"pdf2docx"的第三方包,它提供了非常優(yōu)秀的功能。令人驚訝的是,僅僅幾行代碼就可以完成PDF轉(zhuǎn)換為DOCX的工作。而且,轉(zhuǎn)換結(jié)果也非常出色。讓我們來看一下具體的實現(xiàn)過程。

希望大家可以去倉庫中查看源碼,學(xué)習如何使用這個工具包,也歡迎大家在倉庫中留言,提出任何問題或建議。一起進步,共同學(xué)習!倉庫地址為:https://github.com/StudiousXiaoYu/pdf2docx_with_ui

PDF轉(zhuǎn)DOCX文檔

第三方包:pdf2docx

from pdf2docx import Converter

def convert_pdf_to_docx(pdf_path, docx_path):
    # 創(chuàng)建一個轉(zhuǎn)換器對象
    converter = Converter(pdf_path)

    # 將PDF轉(zhuǎn)換為DOCX
    converter.convert(docx_path, start=0, end=None)

    # 關(guān)閉轉(zhuǎn)換器
    converter.close()

# 調(diào)用函數(shù)進行轉(zhuǎn)換
pdf_path = "input.pdf"
docx_path = "output.docx"
convert_pdf_to_docx(pdf_path, docx_path)

他很容易理解,只需要你定義好文件路徑即可完成轉(zhuǎn)換操作。此外,我也不多解釋了,因為start參數(shù)用于指定轉(zhuǎn)換的起始頁碼,而end參數(shù)用于指定轉(zhuǎn)換的結(jié)束頁碼。你可以根據(jù)需要設(shè)置這兩個參數(shù)的值,如果不需要指定起始頁碼,可以將start參數(shù)設(shè)置為0;如果不需要指定結(jié)束頁碼,則可以將end參數(shù)設(shè)置為None。

官方可視化界面

代碼很簡單,但是如果是自己使用的話,每次都要寫一次路徑可能會很麻煩。不過你可以使用一個可視化交互界面來簡化這個過程,這樣會更方便一些。幸運的是,pdf2docx提供了一個簡易版的界面,你可以在控制臺中直接輸入"pdf2docx gui"來啟動。在界面中,你只需要選擇要轉(zhuǎn)換的PDF文件和一個文件夾作為保存路徑,就可以完成轉(zhuǎn)換操作了。這樣的話,你就不需要每次都手動輸入路徑了。非常方便。

????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)

簡易版可交互界面

但是,如果你對pdf2docx提供的界面不滿意,并且覺得界面不夠好看,那么可以考慮使用另一個第三方界面庫,叫做gradio。我記得你之前在向量數(shù)據(jù)庫中使用過這個庫,對后端非常友好。你可以先寫一個簡單的界面,然后逐步優(yōu)化它,以滿足你的需求。gradio提供了很多功能和自定義選項,你可以根據(jù)自己的喜好來設(shè)計界面的外觀和交互方式。然后慢慢優(yōu)化吧。

import gradio as gr
from pdf2docx import Converter


def convert_pdf_to_docx_with_display(pdf_file):
    tmp_file = "./output.docx"
    # Convert PDF to DOCX
    cv = Converter(pdf_file)
    cv.convert(tmp_file)
    cv.close()

    return tmp_file


def convert_and_display_pdf_to_docx(pdf_file):
    docx_file = convert_pdf_to_docx_with_display(pdf_file)
    return docx_file


iface = gr.Interface(
    fn=convert_and_display_pdf_to_docx,
    inputs=["file"],
    outputs=["file"],
    title="[努力的小雨] PDF to DOCX Converter",
    description="上傳pdf文件,并將其轉(zhuǎn)化為docx文件",
)

iface.launch()

????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)

恩恩,我看著是相當不錯的,這個小工具已經(jīng)可以滿足用戶的需求了。效果圖,你可以看看:

????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)

優(yōu)化版界面

好的,目前可交互的資源還相對較少。然而,如果我們能夠提前預(yù)覽解析后的文字內(nèi)容,有時就能避免不必要的下載。比如,在查看PDF文件時,我們只需要復(fù)制粘貼其中的文字,而無需下載整個文件。為了實現(xiàn)這一功能,我們可以考慮在文件底部添加一個額外的窗口,用于顯示解析后的文字內(nèi)容。通過提供復(fù)制粘貼功能,用戶可以輕松地獲取所需的文字信息。

import gradio as gr
from pdf2docx import Converter
import docx2txt

def convert_pdf_to_docx_with_display(pdf_file):
    tmp_file = "./output.docx"
    # Convert PDF to DOCX
    cv = Converter(pdf_file)
    cv.convert(tmp_file)
    cv.close()

    # Extract text from DOCX
    docx_text = docx2txt.process(tmp_file)
    return tmp_file, docx_text


def convert_and_display_pdf_to_docx(pdf_file):
    docx_file, docx_text = convert_pdf_to_docx_with_display(pdf_file)
    return docx_file, docx_text


iface = gr.Interface(
    fn=convert_and_display_pdf_to_docx,
    inputs=["file"],
    outputs=["file", "text"],
    title="[努力的小雨] PDF to DOCX Converter",
    description="上傳pdf文件,并將其轉(zhuǎn)化為docx文件且在界面單獨顯示文件的文字",
)

iface.launch()

當我們完成代碼的修改后,運行一下,我發(fā)現(xiàn)效果與我預(yù)期的是一致的。

????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)

至強版界面

如果我們已經(jīng)能夠顯示文字,那么是否還需要顯示圖片呢?考慮到PDF中常常包含圖片,為了滿足用戶復(fù)制粘貼圖片的需求,我認為單獨開發(fā)一個窗口來保存圖片是合理的。然而,在這個過程中,我遇到了一些困難,幾乎是我的噩夢。我一直遇到報錯,而且這些錯誤幾乎是我之前從未遇到過的。就像當初學(xué)習Java的時候,總是需要上網(wǎng)搜索解決方法一樣。在使用gradio時,我創(chuàng)建了一個畫廊窗口,但是錯誤地以為它可以直接返回圖像的二進制內(nèi)容,所以沒有進行保存,結(jié)果一直報錯。后來,我保存了圖像,問題得以解決。現(xiàn)在我們來修改代碼,因為有很多重復(fù)的代碼,我就不再一直復(fù)制粘貼了。

# 此處省略部分代碼
# Extract images from DOCX
    images = []
    image_dir = os.path.join(tmp_dir, "images")
    os.makedirs(image_dir, exist_ok=True)
    for embed, related_part in document.part.related_parts.items():
        if isinstance(related_part, ImagePart):
            image_path = os.path.join(image_dir, f'image_{embed}.png')
            with open(image_path, 'wb') as f:
                f.write(related_part.image.blob)
                images.append(image_path)

    return tmp_file, docx_text, images
# 此處省略部分代碼    

我將圖片保存到一個文件夾中,并返回一個包含圖片實體的列表。現(xiàn)在讓我們來看一下效果:可以看到圖片已經(jīng)顯示出來了,但我覺得交互性還不夠,如果用戶不想要前幾頁的PDF怎么辦呢?為了解決這個問題,我將再添加一個輸入框,讓用戶可以輸入相關(guān)信息。讓我們繼續(xù)優(yōu)化一下。

????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)

inputs=["text","file"],

為了實現(xiàn)傳參,我們可以修改輸入?yún)?shù)的類型。這個過程非常簡單。除了我之前演示的簡單樣式外,Gradio還有很多其他樣式可供選擇。我只是提供了一個最簡單的示例,剩下的優(yōu)化工作就交給你了。你可以根據(jù)需要選擇適合的樣式進行優(yōu)化。

????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)

這里我就不演示了,因為只要我們能夠獲取參數(shù),我們就可以實現(xiàn)各種功能。就pdf轉(zhuǎn)docx的可視化界面而言,我已經(jīng)基本完成了它,它符合我的要求并且基本上令我滿意。畢竟,我不需要去優(yōu)化界面。

總結(jié)

pdf轉(zhuǎn)docx文檔是一個非常實用的功能,我只是簡單地實現(xiàn)了一個可視化界面供用戶操作。我這么做的目的之一是想更多地掌握gradio的使用方法,同時也加強對Python流行第三方包的熟悉程度,因為這些第三方包是快速開發(fā)的關(guān)鍵。我也希望你能從中有所收獲,我已經(jīng)公布了本期的源碼地址,如果你覺得還不錯,或者在自己編寫的過程中遇到問題,可以簡單地參考一下。不過,我仍然希望你能自己解決bug問題,這樣一旦熟悉了,就知道如何處理,不用總是上網(wǎng)尋找解決方案。文章來源地址http://www.zghlxwxcb.cn/news/detail-748472.html

到了這里,關(guān)于????Java開發(fā)者的Python快速實戰(zhàn)指南:實用工具之PDF轉(zhuǎn)DOCX文檔(可視化界面)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java開發(fā)者的Python快速實戰(zhàn)指南:探索向量數(shù)據(jù)庫之圖像相似搜索-文字版

    Java開發(fā)者的Python快速實戰(zhàn)指南:探索向量數(shù)據(jù)庫之圖像相似搜索-文字版

    首先,我要向大家道個歉。原本我計劃今天向大家展示如何將圖片和視頻等形式轉(zhuǎn)換為向量并存儲在向量數(shù)據(jù)庫中,但是當我查看文檔時才發(fā)現(xiàn),騰訊的向量數(shù)據(jù)庫尚未完全開發(fā)完成。因此,今天我將用文本形式來演示相似圖片搜索。如果您對騰訊的產(chǎn)品動態(tài)不太了解,可以

    2024年02月05日
    瀏覽(101)
  • ????Java開發(fā)者的Python快速實戰(zhàn)指南:探索向量數(shù)據(jù)庫之圖像相似搜索-文字版

    ????Java開發(fā)者的Python快速實戰(zhàn)指南:探索向量數(shù)據(jù)庫之圖像相似搜索-文字版

    首先,我要向大家道個歉。原本我計劃今天向大家展示如何將圖片和視頻等形式轉(zhuǎn)換為向量并存儲在向量數(shù)據(jù)庫中,但是當我查看文檔時才發(fā)現(xiàn),騰訊的向量數(shù)據(jù)庫尚未完全開發(fā)完成。因此,今天我將用文本形式來演示相似圖片搜索。如果您對騰訊的產(chǎn)品動態(tài)不太了解,可以

    2024年02月05日
    瀏覽(98)
  • ????Java開發(fā)者的Python快速進修指南:文件操作

    Python提供的文件操作相對于Java來說,確實簡單方便許多。不僅操作簡單,代碼可讀性也相對較高。然而,我們需要注意的不僅僅是文件操作的簡單性,還有文件操作的各種模式。在Java中,我們并不經(jīng)常使用像Python中那樣的操作模式。 另外,我們還需要注意文件指針的移動。

    2024年02月05日
    瀏覽(103)
  • Java開發(fā)者的Python快速進修指南:異常捕獲

    在之前的學(xué)習中,我們已經(jīng)講解了函數(shù)和控制流等基本概念。然而,在接觸實際業(yè)務(wù)時,你會發(fā)現(xiàn)異常捕獲也是必不可少的一部分,因為在Java編程中,異常處理是不可或缺的。Python的異常捕獲與Java的異常捕獲原理是相同的,只是在寫法上有一些區(qū)別。它們的目的都是為了處

    2024年02月05日
    瀏覽(24)
  • ????Java開發(fā)者的Python快速進修指南:函數(shù)進階

    在上一篇文章中,我們講解了函數(shù)最基礎(chǔ)常見的用法,今天我想在這里簡單地談一下函數(shù)的其他用法。盡管這些用法可能不是非常常見,但我認為它們?nèi)匀恢档媒榻B。因此,我將單獨為它們開設(shè)一個章節(jié),并探討匿名函數(shù)和裝飾器函數(shù)這兩種特殊的用法。 在Python中,匿名函數(shù)

    2024年02月05日
    瀏覽(30)
  • ????Java開發(fā)者的Python快速進修指南:函數(shù)基礎(chǔ)

    話不多說,今天我們要介紹的是函數(shù)。本系列文章追求短而精,今天我們將重點討論函數(shù)以及與Java方法的區(qū)別。與Java方法不同,函數(shù)不需要像Java方法一樣講究修飾符等其他特性,它只需要使用\\\"def\\\"進行聲明。另外,函數(shù)的參數(shù)也與Java方法有所不同,Java方法中不存在默

    2024年02月05日
    瀏覽(20)
  • ????Java開發(fā)者的Python快速進修指南:面向?qū)ο蠡A(chǔ)

    當我深入學(xué)習了面向?qū)ο缶幊讨?,我首先感受到的是代碼編寫的自由度大幅提升。不同于Java中嚴格的結(jié)構(gòu)和約束,Python在面向?qū)ο蟮膶崿F(xiàn)中展現(xiàn)出更加靈活和自由的特性。它使用了一些獨特的,如self和cls,這些不僅增強了代碼的可讀性,還提供了對類和實例的明確

    2024年02月05日
    瀏覽(34)
  • ????Java開發(fā)者的Python快速進修指南:面向?qū)ο筮M階

    在上一期中,我們對Python中的對象聲明進行了初步介紹。這一期,我們將深入探討對象繼承、組合以及多態(tài)這三個核心概念。不過,這里不打算贅述太多理論,因為我們都知道,Python與Java在這些方面的主要區(qū)別主要體現(xiàn)在語法上。例如,Python支持多重繼承,這意味著一個類可

    2024年02月05日
    瀏覽(28)
  • ????Java開發(fā)者的Python快速進修指南:面向?qū)ο?-高級篇

    ????Java開發(fā)者的Python快速進修指南:面向?qū)ο?-高級篇

    首先,讓我來介紹一下今天的主題。今天我們將討論封裝、反射以及單例模式。除此之外,我們不再深入其他內(nèi)容。關(guān)于封裝功能,Python與Java大致相同,但寫法略有不同,因為Python沒有修飾符。而對于反射來說,我認為它比Java簡單得多,不需要頻繁地獲取方法和屬性,而是

    2024年02月05日
    瀏覽(26)
  • Java開發(fā)者的Python快速進修指南:面向?qū)ο?-高級篇

    Java開發(fā)者的Python快速進修指南:面向?qū)ο?-高級篇

    首先,讓我來介紹一下今天的主題。今天我們將討論封裝、反射以及單例模式。除此之外,我們不再深入其他內(nèi)容。關(guān)于封裝功能,Python與Java大致相同,但寫法略有不同,因為Python沒有修飾符。而對于反射來說,我認為它比Java簡單得多,不需要頻繁地獲取方法和屬性,而是

    2024年02月05日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包