WebPlotDigitizer 完整指南:免费把论文图表数字化,导出 CSV 数据表
【免费下载链接】WebPlotDigitizerComputer vision assisted tool to extract numerical data from plot images.项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer
想让论文折线图、旧报告柱状图背后的数据变回表格,可以用 WebPlotDigitizer:上传一张图表图片,完成坐标系校准与自动检测,图表转 CSV 直接导出。全部图像处理在浏览器本地完成,免费、无需写代码。本文给出一套从导入到导出的完整操作流程。
适用场景与效果
- 折线 / 曲线图读数:对论文插图里的曲线做自动检测,通常一条曲线可得到数百个数据点(示意数据),校准后单点误差大多能压到 1% 量级(示意数据),明显低于用直尺趴屏幕读数的偏差。
- 柱状图取数:读出每根柱顶与柱宽对应的数值,直接得到各柱的量级,相邻柱的差值不用自己估。
- 日期轴图表:日期刻度经 javascript/core/dateConversion.js 的换算逻辑自动变成时间值,不用手工数天数。
效率上,手工逐点读一条 200 个点的曲线通常要几十分钟;同一张图从上传到导出,工具化操作约几分钟可完成(示意数据)。
图表数字化主流程:从导入到 CSV 导出
- 导入图表并预处理。在加载区上传 PNG / JPG,或拖入 PDF 的某一页。图片出现在画布中央,右侧能看到轴类型列表(XY、柱状、极坐标等)。检查点:上传无反应时,先把图片另存为 PNG 再传;坐标轴歪斜时,先用内置图像编辑工具旋转摆正、裁掉多余边框。
- 校准坐标系。选择图表类型(XY 最常见),在两条轴上点两个已知数值的对角点,输入它们代表的数值。完成后侧栏显示坐标映射,用十字光标点一下轴上已知刻度,应读出与图一致的数值。检查点:数值明显不符就撤销重选两点,别带错校准往下走。
- 框选目标区域做自动检测。📐 用取色器选中目标曲线颜色,拖一个矩形框住曲线范围,点自动检测。同色系的数据点会被逐个高亮标记出来。检查点:点偏少时通常是颜色容差太窄,把容差滑块右移(源码默认容差约 100),再检测一次。
- 手动补点收尾。切到手动模式,用十字光标线在漏掉的点旁补录,误选的点可删除。做完这一步你应该看到数据表中点分布连续、不再成段缺失。
- 导出 CSV。各数据集齐全后点导出,文件按数据集分组、按坐标轴生成表头,日期轴自动换算。检查点:Excel 打开乱码时,改用"从文本 / CSV 导入"并指定 UTF-8。
WebPlotDigitizer 本地与离线运行方法
最短路(默认 8080 端口):
git clone https://gitcode.com/gh_mirrors/we/WebPlotDigitizer cd WebPlotDigitizer npm install npm run build npm start容器方式一行:docker compose up --build,配置见 compose.yaml。做完你应该看到浏览器打开本地界面。
desktop/ 目录是实验性 Electron 桌面版:先按上面步骤构建主程序,再在该目录依次执行./fetch_wpd.sh、npm install、npm run package,离线安装包生成在 out 文件夹里,适合长期断网的环境。
影响读数精度的 4 个参数怎么调
- 颜色容差(javascript/core/colorAnalysis.js):像素按颜色分组,容差内算"同色"。像海关按同款清单查行李,容差就是允许的色差:调严则漏检,调松会把同色系的杂点一起圈进来。
- 斑点过滤(javascript/core/curve_detection/blobdetector.js):把相邻同色像素合并成区域,小于尺寸下限的碎点直接丢弃。像安检口设最小放行尺寸,沙粒扔出、只留看得见的石子;漏检小点时先放宽这个下限。
- 曲线追踪与平均窗口(javascript/core/curve_detection/averagingWindow.js):从一个点出发沿相近颜色邻域走完整条线,按步长取样并在窗口内取平均。像用卷尺量围墙,每隔半米记一个读数,相邻几记取平均抵消手抖;步长控制点密度。
- 模板匹配(javascript/core/point_detection/templateMatcherAlgo.js):针对标记形状固定的散点,把形状模板在图上滑动比对找匹配位置。像警方做人脸比对,拿嫌疑人照片逐屏对照监控画面,对上的就是目标。
问题诊断表:曲线读数常见异常速查
- 自动检测点明显偏少 → 颜色容差太窄 → 容差滑块右移,同时调低最小尺寸下限,重新检测。
- 整组数据整体左偏或右移 → 图片本身歪斜导致校准跟着歪 → 回图像编辑里旋转摆正,重新点两个校准点。
- 检出一堆不该有的点(如网格交点) → 网格线与数据同色系被一起挑出 → 启用网格线去除(相关逻辑在 javascript/controllers/gridDetection.js),或用掩膜工具把网格涂掉再检测。
- CSV 在 Excel 里打开乱码 → 编码不匹配 → 用 Excel 的"从文本 / CSV 导入",手动指定 UTF-8。
- 点被断成几段 → 噪声打断了曲线连接 → 放大容差,或切手动模式把断口逐点补上。
进阶与深挖:让数据表更硬
- 一图多曲线就分数据集:每条曲线单独建数据集、单独设颜色阈值,导出后各曲线分列互不干扰,逻辑见 javascript/core/dataset.js。
- 干到一半存工程文件:图像、校准、数据集、手动点全部落盘,下次打开接着干,实现见 javascript/services/saveResume.js。
- 多页 PDF 逐页处理:每页有独立撤销历史和数据集,见 javascript/controllers/pageManager.js。
想自查精度或看行为边界,tests/ 里有覆盖轴校准、柱状提取、日期换算的单元测试;locale/ 含中文在内的六种语言包;desktop/ 负责桌面端打包。输入一张图,得到一张表——读数这件事,交给它就好。
【免费下载链接】WebPlotDigitizerComputer vision assisted tool to extract numerical data from plot images.项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考