├── requirements.txt ├── images └── markitdown-web.png ├── README.md └── app.py /requirements.txt: -------------------------------------------------------------------------------- 1 | streamlit 2 | markitdown 3 | -------------------------------------------------------------------------------- /images/markitdown-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ccbsdu/markitdown-web/HEAD/images/markitdown-web.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # MarkItDown Web 转换器 3 | 4 | 一个基于 MarkItDown 的 Web 界面工具,提供便捷的文件转 Markdown 功能。 5 | 6 | ## 功能特点 7 | 8 | - 🚀 简单易用的 Web 界面 9 | - 📦 支持批量文件上传和转换 10 | - 👀 实时预览转换结果 11 | - 💾 一键下载转换后的文件 12 | - 🔌 支持多种文件格式转换 13 | 14 | ## 支持的文件格式 15 | 16 | - 文档类 17 | - PDF 文件 18 | - Microsoft Word 文档 19 | - PowerPoint 演示文稿 20 | - Excel 表格 21 | 22 | - 多媒体 23 | - 图片文件(支持 EXIF 元数据和 OCR) 24 | - 音频文件(支持 EXIF 元数据和语音转写) 25 | 26 | - 其他格式 27 | - HTML 网页 28 | - CSV 数据文件 29 | - JSON 文件 30 | - XML 文档 31 | - ZIP 压缩包(可遍历内容) 32 | 33 | ## 环境要求 34 | 35 | - Python 3.x 36 | - pip 包管理器 37 | 38 | ## 快速开始 39 | 40 | 1. 克隆项目到本地: 41 | ```bash 42 | git clone git@github.com:ccbsdu/markitdown-web.git 43 | cd markitdown-web 44 | ``` 45 | 46 | 2. 创建并激活虚拟环境: 47 | ```bash 48 | python3 -m venv venv 49 | source venv/bin/activate 50 | ``` 51 | 52 | 3. 安装依赖包: 53 | ```bash 54 | pip install -r requirements.txt 55 | ``` 56 | 57 | 4. 启动应用: 58 | ```bash 59 | streamlit run app.py 60 | ``` 61 | 62 | 5. 在浏览器中访问应用(默认地址:http://localhost:8501) 63 | 64 | ## 使用说明 65 | 66 | 1. 打开应用后,点击"选择要转换的文件"按钮或直接拖拽文件到上传区域 67 | 2. 支持同时选择多个文件进行批量转换 68 | 3. 文件上传后会自动开始转换 69 | 4. 转换完成后可以在界面上预览转换结果 70 | 5. 点击"下载 Markdown 文件"按钮保存转换后的文件 71 | 72 | ## 项目结构 73 | 74 | ``` 75 | markitdown-web/ 76 | ├── app.py # 主应用程序 77 | ├── requirements.txt # 项目依赖 78 | └── README.md # 项目文档 79 | ``` 80 | 81 | ## 注意事项 82 | 83 | - 建议使用虚拟环境运行应用 84 | - 大文件转换可能需要较长时间,请耐心等待 85 | - 转换后的临时文件会自动清理 86 | - 请确保有足够的磁盘空间 87 | 88 | ## 许可证 89 | 90 | 本项目基于 MIT 许可证开源。 91 | 92 | ## 致谢 93 | 94 | - 感谢 [MarkItDown](https://github.com/microsoft/markitdown) 提供核心转换功能 95 | - 感谢 [Streamlit](https://streamlit.io/) 提供优秀的 Web 框架 96 | ``` 97 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | import streamlit as st 2 | import os 3 | from markitdown import MarkItDown 4 | 5 | st.set_page_config(page_title="MarkItDown Web", layout="wide") 6 | 7 | st.title("MarkItDown Web 转换器") 8 | 9 | # Initialize MarkItDown without the enable_plugins parameter 10 | md = MarkItDown() 11 | 12 | # 文件上传部分 13 | uploaded_files = st.file_uploader("选择要转换的文件", accept_multiple_files=True) 14 | 15 | if uploaded_files: 16 | for uploaded_file in uploaded_files: 17 | st.subheader(f"处理文件: {uploaded_file.name}") 18 | 19 | # 保存上传的文件到临时目录 20 | temp_path = f"temp_{uploaded_file.name}" 21 | with open(temp_path, "wb") as f: 22 | f.write(uploaded_file.getbuffer()) 23 | 24 | try: 25 | # 转换文件 26 | result = md.convert(temp_path) 27 | 28 | # 显示转换结果 29 | st.text_area("转换结果", result.text_content, height=300) 30 | 31 | # 提供下载按钮 32 | st.download_button( 33 | label="下载 Markdown 文件", 34 | data=result.text_content, 35 | file_name=f"{os.path.splitext(uploaded_file.name)[0]}.md", 36 | mime="text/markdown" 37 | ) 38 | 39 | except Exception as e: 40 | st.error(f"转换失败: {str(e)}") 41 | finally: 42 | # 清理临时文件 43 | if os.path.exists(temp_path): 44 | os.remove(temp_path) 45 | 46 | st.sidebar.markdown(""" 47 | ## 使用说明 48 | 1. 点击"选择要转换的文件"上传一个或多个文件 49 | 2. 系统会自动转换文件为 Markdown 格式 50 | 3. 可以预览转换结果 51 | 4. 点击"下载 Markdown 文件"保存结果 52 | 53 | ## 支持的文件格式 54 | - PDF 55 | - Word 56 | - PowerPoint 57 | - Excel 58 | - 图片文件 59 | - 音频文件 60 | - HTML 61 | - CSV, JSON, XML 62 | - ZIP 文件 63 | """) --------------------------------------------------------------------------------