做过护照照片工具的人都知道,真正折磨人的不是人脸检测,也不是背景抠图。是各国规格。
每个国家的尺寸都不一样。背景色要求不同。上传文件大小限制各异。头身比例也有细微差别。这些资料散落在各国领事馆的网站上,用12种语言写成,其中一半链接每半年就404一次。
开发者WhiteTirocket维护这套数据集已经一年了,同时在做IDPhotoSnap——一个纯浏览器端的免费护照照片工具。上周他把整套数据开源到了GitHub:whitetirocket/passport-photo-specs。
MIT协议。JSON、TypeScript、Python绑定。100个国家,248种证件格式。还有一个公开HTTP API:idphotosnap.com/api/specs,无需认证,CORS全开。
数据结构很干净。每个国家条目包含多种证件:护照、签证、身份证、驾照、居留许可。每种证件有完整规格:毫米尺寸、像素尺寸、DPI、背景色(含十六进制色值)、头身比例要求。比如意大利签证是35×45毫米,300 DPI下对应413×531像素,背景要求"Plain light grey",色值#eeeeee。
用法有三种。最直接的是HTTP API,边缘缓存1小时,生产环境直接用,不需要申请权限。想本地化就npm install,或者直接用specs/specs.json那个174KB的纯JSON文件。Python、Go、Rust的示例代码都有,覆盖最常见的三种场景:按国家筛选、按slug查找、验证规格一致性。
作者提到,市面上大多数工具号称"支持200+国家"或"900+证件类型",实际做法通常是拿ICAO 9303标准(35×45mm、白色背景)当默认规格,没单独验证过的国家就套用。这套开源数据的价值在于,你可以跳过国家规格调研,直接做产品。
热门跟贴