marker-pdf的工具类MarkerPDF职责;IO 流踩坑;

1.marker-pdf的工具类MarkerPDF职责

目前我的MarkerPDF职责为用户意图 + 规则约束

层级 职责
MarkerPDF 用户意图 + 规则约束
extract_pdf I/O + 调度
server / provider 底层执行(不信任输入)

👉之前在MarkerPDF是写死了pdf的读取页数,导致一旦页数超出了可读的pdf范围,就会报错。

MarkerPDF的职责就是用户意图 + 规则约束,所以页数验证也应该为MarkerPDF的方法。
在工具类中添加validate_page_range方法。在拼装config之前进行调用。

2.IO流踩坑
核心原则(记住这句)
“任何一个 IO 流,只要被读过一次,在再次使用前必须 seek(0)。”

你用 同一个 pdf_io: BytesIO
先给了:
PdfReader(pdf_io)

再原样传给:
requests.post(files={"file": pdf_io})

结果:
👉流指针位置不可控(requests 直接从当前 cursor 位置开始传)
👉服务端拿到的不是完整 PDF(服务端收到的 PDF 不是 %PDF- 开头)
👉pdfium 极其严格 → 直接抛 Data format error

👉每个库用自己的 BytesIO(bytes)

posted @ 2026-01-23 11:53  asphyxiasea  阅读(3)  评论(0)    收藏  举报