」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 PyMuPDFM 將 PDF 轉換為 Markdown 及其評估

如何使用 PyMuPDFM 將 PDF 轉換為 Markdown 及其評估

發佈於2024-11-07
瀏覽:449

PyMuPDF4LLM 是一個設計用於將 PDF 轉換為 Markdown 格式的函式庫。在這裡,我將分享我測試這個庫的經驗。

安裝

首先使用下列指令安裝庫:


pip install pymupdf4llm


用法

基本用法非常簡單,只需三行程式碼即可將 PDF 轉換為 Markdown:


import pymupdf4llm
md_text = pymupdf4llm.to_markdown("input.pdf")
print(md_text)


您可以指定參數來調整內容的擷取方式。

按頁提取文本

預設情況下,整個 PDF 會轉換為單一文字輸出。但是,您可以透過指定 page_chunks=True 來逐頁擷取文字。


md_text = pymupdf4llm.to_markdown("input.pdf", page_chunks=True)


擷取影像

要將映像提取為文件,請使用 write_images=True 選項:


md_text = pymupdf4llm.to_markdown("input.pdf", write_images=True)


也可以使用base64編碼直接在Markdown中嵌入圖像:


md_text = pymupdf4llm.to_markdown("input.pdf", embed_images=True)


轉換結果評估

為了進行測試,使用了各種具有不同 Markdown 元素的 PDF。

How to Convert PDFs to Markdown Using PyMuPDFM and Its Evaluation

標頭轉換

標題已正確轉換為 Markdown 格式。這是結果的一部分:


# Sample Markdown Guide

This is a sample markdown file that includes various features for quick reference.

## 1. Headers

...

## 3. Lists


粗體和斜體文本

粗體和斜體格式也正確轉換:


**Bold: **Bold Text****

_Italic: *Italic Text*_

**_Bold and Italic: ***Bold and Italic***_**


清單轉換

第一層有序列表轉換沒有問題,但嵌套列表和無序列表轉換不準確。

How to Convert PDFs to Markdown Using PyMuPDFM and Its Evaluation


## 3. Lists

### Unordered List

Item 1

Item 2

Sub-item 1

Sub-item 2

### Ordered List

1. First item

2. Second item

1. Sub-item A

2. Sub-item B


連結轉換

鏈接的URL被提取,但包含鏈接的整行變成了超鏈接,偏離了原始格式。

How to Convert PDFs to Markdown Using PyMuPDFM and Its Evaluation


## 4. Links and Images

[You can add links using [Link Text](URL).](https://www.example.com/)


影像擷取

預設不會提取映像,但可以使用 write_images=True 將映像保存在本地。


md_text = pymupdf4llm.to_markdown("input.pdf", write_images=True)


然後在 Markdown 中引用已儲存的圖像,如下所示:


### Image Example

![](input.pdf-1-0.png)




表轉換

沒有垂直邊框的簡單表格無法準確轉換(可能是因為不明確的列邊界導致表格被視為純文字)。

How to Convert PDFs to Markdown Using PyMuPDFM and Its Evaluation


## 5. Tables

**Column 1** **Column 2** **Column 3**

Row 1 Data A Data B

Row 2 Data C Data D




代碼轉換

程式碼區塊已正確轉換,但語言規範(例如 python)未保留。內聯代碼轉換也存在問題。

How to Convert PDFs to Markdown Using PyMuPDFM and Its Evaluation


## 6. Code

### Inline Code

Use backticks for inline code: print("Hello, world!")

### Code Block

Use triple backticks for code blocks:

```
def greet(name):
return f"Hello, {name}!"
print(greet("Markdown"))
```




多行文本

對於多行文本,換行符號將以原始 PDF 中的顯示方式保留。

How to Convert PDFs to Markdown Using PyMuPDFM and Its Evaluation


Markdown is a lightweight and versatile markup language favored by developers, writers, and bloggers alike

due to its simplicity in formatting text, enabling users to create readable and well-structured documents—

whether for documentation, blog posts, or articles—without the complexity of HTML, while also offering the

ability to convert content seamlessly into other formats like HTML, PDF, and even slideshows, making it an

ideal choice for projects that require both clarity and flexibility in presentation.




結論

儘管在準確轉換清單和連結方面存在挑戰,PyMuPDF4LLM 是將 PDF 轉換為 Markdown 的有用工具。它可以在本地工作,無需外部語言模型,適合無法訪問互聯網的環境。

版本聲明 本文轉載於:https://dev.to/m_sea_bass/how-to-convert-pdfs-to-markdown-using-pymupdf4llm-and-its-evaluation-kg6?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 掌握 Python 命令列介面 (CLI):綜合指南
    掌握 Python 命令列介面 (CLI):綜合指南
    介绍 Python 因其多功能性和易用性而广为人知,尤其是在构建命令行界面 (CLI) 应用程序时。无论您是想自动执行日常任务、构建开发人员工具还是创建灵活的脚本,Python 丰富的生态系统都提供了各种库来有效处理 CLI。 在这篇博文中,我们将深入探讨如何使用 Python 中...
    程式設計 發佈於2024-11-08
  • 為什麼我使用 Bootstrap Modals 會收到「TypeError: $(...).modal is Not a Function\」?
    為什麼我使用 Bootstrap Modals 會收到「TypeError: $(...).modal is Not a Function\」?
    TypeError: $(...).modal is Not a Function with Bootstrap Modal問題當動態插入Bootstrap 模態到另一個視圖的HTML,您可能會遇到以下錯誤: TypeError: $(...).modal is not a function。此錯誤...
    程式設計 發佈於2024-11-08
  • 如何修復 cURL 錯誤 35:「SSL/TLS 握手中出現問題」?
    如何修復 cURL 錯誤 35:「SSL/TLS 握手中出現問題」?
    使用cURL 解決SSL/TLS 握手問題遇到臭名昭著的cURL 錯誤35,「SSL/TLS 握手中某處出現問題,”可能會令人沮喪。此錯誤訊息表示即使 cURL 與 HTTP 協定完美配合,在 HTTPS 請求期間建立安全連線也存在困難。 嘗試的常見解決方案是將 CURLOPT_SSL_VERIFY...
    程式設計 發佈於2024-11-08
  • 如何掌握 MERN 堆疊:全端開發人員指南
    如何掌握 MERN 堆疊:全端開發人員指南
    MERN 堆疊(MongoDB、Express.js、React.js、Node.js)已成為全端 Web 開發最受歡迎的技術之一。作為一名開發人員,學習 MERN 堆疊可以打開一個充滿機會的世界,並讓您走上建立強大的動態 Web 應用程式的道路。以下是您如何掌握 MERN 堆疊並將您的全堆疊開發技...
    程式設計 發佈於2024-11-08
  • 如何確保您的 PHP 網站正確處理 UTF-8 編碼?
    如何確保您的 PHP 網站正確處理 UTF-8 編碼?
    確保您的 PHP 網站進行全面的 UTF-8 處理要針對 UTF-8 編碼優化您的 PHP網站,建議執行幾個關鍵步驟.啟用相關擴充:mbstring: 提供多位元組字串的支持,包括編碼轉換和字串操作。 PHP配置(php.ini):default_charset:設定為「utf-8」確保預設輸出UT...
    程式設計 發佈於2024-11-08
  • VTune 是唯一的遊戲嗎?探索 Rational Quantify 的 C++ 分析替代方案。
    VTune 是唯一的遊戲嗎?探索 Rational Quantify 的 C++ 分析替代方案。
    探討增強 C 效能的分析工具當深入分析工具領域時,經常會遇到 Rational Quantify 的建議。然而,問題仍然存在:是否有其他選項可以提供卓越的功能? VTune:值得競爭者英特爾的 VTune 是備受推崇的分析工具之一。 VTune 享有盛譽,有潛力提升您的程式碼分析體驗。其強大的功能包...
    程式設計 發佈於2024-11-08
  • 為什麼我的 MySQL 查詢在 PHP 中回傳「資源 id #6」?
    為什麼我的 MySQL 查詢在 PHP 中回傳「資源 id #6」?
    在PHP 中回顯MySQL 回應的資源ID #6在PHP 中使用MySQL 擴充查詢資料庫時,您可能會遇到“Resource id #6”輸出而不是預期結果。發生這種情況是因為查詢傳回資源,而不是字串或數值。 回顯結果要顯示預期結果,您必須先使用下列指令取得資料提供的取得函數之一。其中一個函數是 m...
    程式設計 發佈於2024-11-08
  • 使用 React Query 建立 Feed 頁面
    使用 React Query 建立 Feed 頁面
    目标 在本文中,我们将探索如何使用 React Query 构建提要页面! 这是我们将要创建的内容: 本文不会涵盖构建应用程序所涉及的每个步骤和细节。 相反,我们将重点关注关键功能,特别是“无限滚动”和“滚动到顶部”功能。 如果您有兴趣咨询整个实现,您可以在此 GitHub 存...
    程式設計 發佈於2024-11-08
  • (SQL 查詢)Express.js 中的快取與索引
    (SQL 查詢)Express.js 中的快取與索引
    開發者您好,這是我在這個平台上的第一篇文章! ? 我想分享我在 Express.js 和 SQL 方面的令人驚訝的體驗。我是一名初學者開發人員,在為我的專案開發 API 時,我每天處理超過 20 萬個 API 請求。最初,我使用 Express.js API 設定了一個 SQLite 資料庫(約 ...
    程式設計 發佈於2024-11-08
  • 如何防止 Chrome 的自動填充更改您的字體?
    如何防止 Chrome 的自動填充更改您的字體?
    克服Chrome 的自動填充字體變更挑戰在Windows 上遇到Chrome 的自動填充功能時,您可能會遇到煩人的字體更改問題。將滑鼠懸停在已儲存的使用者名稱上時,字體大小和樣式會發生變化,從而破壞表單的對齊方式。雖然您可以對輸入套用固定寬度來緩解此問題,但更有效的解決方案是完全防止字體變更。 要實...
    程式設計 發佈於2024-11-08
  • 以下是一些適合您文章內容的基於問題的標題:

* 如何為 Spring Boot 應用程式配置上下文路徑?
* 如何使用自訂 Con 存取我的 Spring Boot 應用程式
    以下是一些適合您文章內容的基於問題的標題: * 如何為 Spring Boot 應用程式配置上下文路徑? * 如何使用自訂 Con 存取我的 Spring Boot 應用程式
    如何為Spring Boot 應用程式添加上下文路徑Spring Boot 提供了一種簡單的方法來設定應用程式的上下文根,允許它透過localhost:port/{app_name} 存取。操作方法如下:使用應用程式屬性:在src/main/resources 目錄中建立一個application....
    程式設計 發佈於2024-11-08
  • 程式碼日數:進階循環
    程式碼日數:進階循環
    2024 年 8 月 30 日星期五 我目前正在學習 Codecademy 全端工程師路徑的第二門課程。我最近完成了 JavaScript 語法 I 課程,並完成了 JavaScript 語法 II 中的陣列和循環作業。接下來是物件、迭代器、錯誤和調試、練習和三個挑戰項目。 今天的主要亮點是學習對...
    程式設計 發佈於2024-11-08
  • Angular Addicts # Angular 隱式函式庫,未來是獨立的等等
    Angular Addicts # Angular 隱式函式庫,未來是獨立的等等
    ?嘿,Angular Addict 夥伴 這是 Angular Addicts Newsletter 的第 29 期,這是一本每月精選的引起我注意的 Angular 資源合集。 (這裡是第28期、27期、26期) ?發佈公告 ? Angular 18...
    程式設計 發佈於2024-11-08
  • 機器學習中的 C++:逃離 Python 與 GIL
    機器學習中的 C++:逃離 Python 與 GIL
    介紹 當 Python 的全域解釋器鎖定 (GIL) 成為需要高並發或原始效能的機器學習應用程式的瓶頸時,C 提供了一個引人注目的替代方案。這篇部落格文章探討如何利用 C 語言進行 ML,並專注於效能、並發性以及與 Python 的整合。 閱讀完整的部落格! ...
    程式設計 發佈於2024-11-08
  • 如何在 Java HashMap 中將多個值對應到單一鍵?
    如何在 Java HashMap 中將多個值對應到單一鍵?
    HashMap 中將多個值對應到單一鍵在 Java 的 HashMap 中,每個鍵都與單一值關聯。但是,在某些情況下,您可能需要將多個值對應到單一鍵。以下是實現此目的的方法:多值映射方法:最簡單、最直接的方法是使用列表映射。這涉及創建一個 HashMap,其中的值是包含多個值的 ArrayList。...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3