OCR对pdf进行文字提取(继续)--mark-pdf的路径修改;mark-pdf占用硬盘问题;pdf字节流包装为文件;返回代码405;修改包源码后docker镜像“启动期配置注入”机制;动态生成 LLM 提示词;

1.OCR对pdf进行文字提取(继续)--mark-pdf的路径修改
👉官方目前没有提供直接更改模型存储路径的渠道,只能去源代码中修改。
使用MODEL_CACHE_DIR设置/环境变量指定模型下载位置 ,从代码找到了模型的下载路径:

在python包路径下:surya/settings.py中
修改Settings类的属性:    # MODEL_CACHE_DIR: str = str(Path(user_cache_dir("datalab")) / "models")
                          MODEL_CACHE_DIR: str = str("marker_model")

暂时解决了mark-pdf模型存储维妮塔

2.mark-pdf占用硬盘问题
👉第一次使用Marker-pdf进行ocr,修改模型存储路径。
Marker-pdf把模型下载到缓存内部,对后面使用容器运行非常不方便,需要修改其模型路径。
👉使用中发现Marker-pdf如果有新的更新模型,每次启动就会去新下载新的模型。
后面的日期就代表Marker-pdf最新的模型。
ollama_api/marker_model/layout/2025_09_23
👉考虑到更新的周期较长,而且仅仅在程序启动时才是检测,所以目前忽略这个问题,仍然进行部署。

3.pdf字节流包装为文件
把内存里的 bytes 包装成一个“像文件一样”的对象
pdf_stream = BytesIO(pdf_bytes)

4.返回代码405
用 GET 请求访问了一个 只允许 POST(或其他方法) 的接口

5.修改包源码后docker镜像“启动期配置注入”机制

启动期配置注入”机制,dockerfile文件中:

COPY sitecustomize.py /usr/local/lib/python3.11/site-packages/

6.动态生成 LLM 提示词
👉在 Python 的 schema 类(比如用 Pydantic 或 dataclasses 定义的数据模型)中直接把每个字段的提示词(prompt)写进去,
👉以便在生成 JSON 或调用 LLM 时使用。可以通过 字段的 description 或自定义属性 来存储提示词。
👉每个字段的提示词都和字段绑定在一起,易于维护
👉可动态生成 LLM 提示词
👉兼容 Pydantic 校验和文档生成(如 FastAPI 的 OpenAPI 文档)
schema类中直接指定提示词:

class ResearchAwards(BaseModel):
    achievement_name: str = Field(
        description="成果名称"
    )
    award_type: str = Field(
        description="奖励类型,例如‘科技进步奖’、‘自然科学奖’等。表示奖励的具体内容。"
    )

调用模型时,拼接提示词:

field_prompts = "\n".join(
    f"- {name}: {field.description}"
    for name, field in Schema.model_fields.items(
)
[字段提示]
{field_prompts}
posted @ 2026-01-23 11:56  asphyxiasea  阅读(3)  评论(0)    收藏  举报