惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
Y
Y Combinator Blog
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Jina AI
Jina AI
B
Blog RSS Feed
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
D
Docker

如鱼饮水

2026年高联二试(A卷)几何题的解答 2026年CNMO的几何题的解答(一) 2026年CSMO的几何题的解答(二) 2026年CSMO的几何题的解答(一) 关于新课标初中数学教材的评价 2026年CWMI的几何题的解答(二) 2026年CWMI的几何题的解答(一) 2026年CGMO的几何题的解答 2026 年 IMO 的几何题的解答 本地部署Gemma4-26B-A4B模型 不间断空格的处理方法 一个VSCode插件:支持TikZ预览 在Neovim中支持LuaLaTeX高亮 2026年全国I卷压轴题的解答 2026年北京高联预赛的几何题的解答 垂足三角形、等角共轭点与「六点圆」 本地部署 Hy-MT2 翻译模型 2026 年 USAMO 的几何题的解答(一) 使用天地图API进行坐标反查 使用 Vibe Coding 编写一个属于自己的 VSCode 插件 尝试使用 DeepSeek-OCR 2 尝试使用MinerU 使用VSCode编辑Markdown的几个常用设置 在WSL上挂载U盘 在使用LuaLaTeX时控制中英文字符的间距 使用vLLM框架加速PaddleOCR-VL 关于PaddleOCR-VL和PaddleOCR对数学类书籍识别的对比 尝试使用PaddleOCR-VL 关于DeepSeek-OCR和PaddleOCR对数学类书籍识别的对比 白嫖Kaggle平台部署DeepSeek-OCR
Vibe Coding一个Python版本的pdf2svg
西风冷香 · 2026-04-29 · via 如鱼饮水

我的博客里面的插图很多都是用Tikz写的,然后编译成PDF再转换为SVG,具体的流程见之前的文章

这里面关键的一步就是如何将PDF转换为SVG

我能找到的唯一一个工具就是pdf2svg,但是它非常简单,而且并不完全符合我的需要。

例如,我发现直接生成的SVG图片太小了,需要放大到1.5倍,里面的字母才会和正文中的字母大小基本一致。这就必须要修改源代码才能解决:

pdf2svg-0.2.4-change-svg-size.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20




@@ -62,12 +62,15 @@ int convertPage(PopplerPage *page, const char* svgFilename)
}
poppler_page_get_size (page, &width, &height);

+ const double scale = 1.5;
+
// Open the SVG file
- surface = cairo_svg_surface_create(svgFilename, width, height);
+ surface = cairo_svg_surface_create(svgFilename, width * scale, height * scale);
cairo_svg_surface_set_document_unit(surface, CAIRO_SVG_UNIT_PT);
drawcontext = cairo_create(surface);

// Render the PDF file into the SVG file
+ cairo_scale(drawcontext, scale, scale);
poppler_page_render_for_printing(page, drawcontext);
cairo_show_page(drawcontext);

最近看到了这篇文章,作者使用Vala重写了pdf2svg工具。于是突然想到,我完全可以重写一个Python版本的pdf2svg。之前也有过类似的念头,不过嫌麻烦就放弃了。

正好最近DeepSeek-V4-Pro模型新发布且大降价,我就使用把它接入Claude Code来完成这次的重写任务。

当然,也是顺带测试一下DeepSeek的新模型。

结果非常成功,一次对话就完成了重写,后面添加了几个功能(将缩放大小、背景颜色作为参数输入,允许更宽泛的页码范围参数),都是一次性就完成了。

具体代码见pdf2svg.py


期间的几点发现:

  1. 刚开始的时候,我发现Claude Code计算的tokens数基本是DeepSeek实际用量的两倍,如图所示:

其中25号使用的都是flash模型,29号使用的都是pro模型。

最初我没想明白,后来刷到了X上的推文,发现是使用中文造成的:

non-English tax

上图中的表格是将同一篇文章翻译成不用的语言之后使用不同模型进行处理,和OpenAI的模型直接处理原始英文文本的tokens数量的对比,作者将其成为「non-English tax」。

横向对比会发现,同样是处理中文文本,Anthropic的模型的tokens用量基本就是DeepSeek V4的两倍。这和前面的观察是相符的。

  1. 我参考这篇文章设置了全局记忆,但是不知道为什么,实际并没有自动生效。最后是我手动命令它「读取global memory」才起了作用。

  2. 由于编程的上下文大都是英文,所以最终Claude Code计算的tokens总用量和DeepSeek实际的用量差的没那么多了。最终花费不到6毛钱,其中将近97%的缓存命中率立了大功。