目录

前言

环境的搭建

基础环境的初始化代码编写

代码初始化

文档上传接口的编写


前言

DocForge平台是基于FastAPI实现的doc文档的操作web平台。其主要目的是为了结合ocr实现对pdf转换为word的操作。目前市面上有很多的在线转换工具,但都有一个点,转换的格式要不出错,要不识别的很烂。但是从今天开始,手把手教会你开始实现一个基于自己的本地端结合AI在页面实现pdf的转换并实现优化和翻译等操作,本平台的开发时间会很长,更多的是对系统的开发的梳理,在篇幅完结的时候将项目开源,一起实现更多内容的开发,之后博主也会为爱发电。

环境的搭建

需要先安装的几个简单的环境后续需要添加在进行说明,因为博主是边开发边写操作记录文档的,所以需要点时间的。

FastAPI安装指令

pip install fastapi

uvicorn服务安装

pip install uvicorn

文档操作包

pip install python-multipart

OK目前这几个环境就OK了,因为本章涉及到的就只是文档的上传,后续才会涉及到ocr识别,在下一章节就会涉及到了。

基础环境的初始化代码编写

创建类似的几个文件夹然后需要在backend里面创建一个Fastapi.py文件这里面主要用来创建api接口的编写操作。

然后还要创建一个config文件用来环境一些路由地址的配置。

代码初始化

fastapi.py文件代码的初始化

import uvicorn
from fastapi import FastAPI, UploadFile, File, HTTPException
from backend.setting import fastapi_host, fastapi_port
import os
app = FastAPI()

if __name__ == '__main__':
    uvicorn.run(app, host=fastapi_host, port=fastapi_port)

创建一个类似的代码文件,这样子就把uvicorn初始化完成了,直接运行文件就可以启动fastapi服务测试接口就行了。

fastapi_host="127.0.0.1"
fastapi_port=8000

目前还没打算跨域,需要跨域的时候,博主后续会添加说明的。

文档上传接口的编写

UPLOAD_DIR = "../uploads"
os.makedirs(UPLOAD_DIR, exist_ok=True)
@app.post("/uploads")
async def uploads(file:UploadFile=File(...)):
    file_ext = [".pdf",".doc",".docx"]
    name,ext=os.path.splitext(file.filename)
    if ext not  in file_ext:
        return ("文件类型不符和条件,请确保为[.pdf,.doc,.docx]等后缀文件")
    else:
        file_path = os.path.join(UPLOAD_DIR,file.filename)
        try:
            content = await file.read()
            with open(file_path,"wb") as buffer:
                buffer.write(content)
        except Exception as e:
            raise HTTPException(status_code=500, detail=f"文件保存失败: {str(e)}")
        finally:
            await  file.close()

        return {"file_name":file.filename,"file_path":file_path,"status":200}

这里面涉及到一些python里面的文档打开读写操作,详情可以看博主之前的文章。

这里主要就说明这个接口的流程就行了,把文件上传之后,切割获取file的内容,然后判断后缀名,是否满足后缀名列表的内容,满足就往下面走,然后进行编写文件后缀名组合然后读取写入本地的文件夹里面(后续可操作到MongDB或者cloudflea)

那么文件上传操作就到这里,下一章节就是ocr的安装然后将pdf转换为word文档的代码编写。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐