Microsoft MarkItDown 工具摘要與使用範例

MarkItDown 是由微軟開發的 Python 工具,專門用於將各種文件格式和辦公文檔轉換為 Markdown 格式。這個工具在發布後迅速獲得了廣泛關注。

Github

https://github.com/microsoft/markitdown

格式轉換

MarkItDown 支援多種文件格式的轉換,包括: - PDF - PowerPoint - Word - Excel - Images (EXIF metadata and OCR) - Audio (EXIF metadata and speech transcription) - HTML - Text-based formats (CSV, JSON, XML) - ZIP files (iterates over contents) - Youtube URLs - EPubs - ... and more!

使用範例

安裝方法

1pip install markitdown[all]

使用命令轉換格式

1# 基本轉換
2markitdown 1_PDFsam_pool_charlie.pdf -o 1_PDFsam_pool_charlie.md

MarkItDown 將 YouTube 轉換成 Markdown 的範例

沒什麼作用,因為只是提取了字幕文本,但沒任何 Markdown 語法元素,就結果來說只是個純文本。

 1from markitdown import MarkItDown
 2import youtube_transcript_api
 3import os
 4
 5def youtube_to_markdown(video_id, languages=['en','zh-Hant']):
 6    # 使用 youtube_transcript_api 獲取字幕
 7    try:
 8        transcript = youtube_transcript_api.YouTubeTranscriptApi.get_transcript(video_id, languages=languages)
 9        
10        # 將字幕轉換為純文本
11        transcript_text = ""
12        for line in transcript:
13            transcript_text += line['text'] + "\n"
14        
15        # 保存為臨時文本文件
16        temp_file = "temp_transcript.txt"
17        with open(temp_file, "w", encoding="utf-8") as f:
18            f.write(transcript_text)
19        
20        # 使用 MarkItDown 轉換為 Markdown
21        md = MarkItDown()
22        result = md.convert(temp_file)
23        
24        # 清理臨時文件
25        os.remove(temp_file)
26        
27        # 從結果對象中提取文本內容
28        # 嘗試可能的屬性或方法
29        if hasattr(result, 'text'):
30            return result.text
31        elif hasattr(result, 'content'):
32            return result.content
33        elif hasattr(result, 'get_text'):
34            return result.get_text()
35        elif hasattr(result, 'get_content'):
36            return result.get_content()
37        else:
38            # 如果以上都不存在,則嘗試直接將結果轉換為字符串
39            return str(result)
40    except Exception as e:
41        return f"轉換失敗: {str(e)}"
42
43# 使用示例,如果影片本身沒字幕,則會下載失敗
44video_id = "TQDHGswF67Q"  # YouTube ID
45markdown = youtube_to_markdown(video_id)
46print(type(markdown))
47print(markdown)
48
49# 保存為 Markdown 文件
50with open(f"{video_id}.md", "w", encoding="utf-8") as f:
51    f.write(markdown)
comments powered by Disqus