读懂评级卡的标签:PSA、BGS、CGC 及其他评级公司
评级卡的标签是一份摘要,印在上面的证书编号则是通往评级公司对这张卡所存记录的钥匙。PSA 的保证是它的“assurance that we stand behind our opinions as to the authenticity and/or grade of each item we encapsulate, as reflected on each PSA label”(承诺对所封装的每件物品的真伪和/或等级所持的意见负责,以每张 PSA 标签上所反映的为准);按我的理解,标签陈述的是这一意见,而用编号查询,是买家确认这一意见是否依然有效的方式。本文读到的六家评级公司(PSA、Beckett、CGC、SGC、TAG 和 ACE)都公开了按编号查询的入口;PSA 的保证涵盖卡牌的等级和真伪,但前提是索赔人购买时,这张卡“had an active certification number on the cert lookup feature of the PSA website at the time it was purchased”(在购买时于 PSA 网站的证书查询功能上有一个有效的证书编号)。12 等级旁边的文字会改变数字的含义:PSA 的“Mint 9oc”是一个居中度低于 9 分标准的 9 分;CGC 标签上写着 9.5,要么是 CGC 现在按 10 分计的旧版 Gem Mint,要么是位于 10 分之下的现行 Mint+;而量表顶端的说法各家不同:CGC、SGC 和 TAG 把 Pristine 10 与 Gem Mint 10 分开评,Beckett 唯一的 10 分是 Pristine,它的 Gem Mint 是 9.5,而它的黑标把四项子分数都是 10 的 Pristine 10 与其余区分开来。3456789 编号本身也因评级公司而异:SGC 的编号在黑标上是 7 位数字,在绿标和白标上是“11 characters (XXXXXXX-XXX)”(11 个字符);TAG 的编号“typically 1 Letter followed by 7 Numbers”(通常是 1 个字母后跟 7 个数字);ACE 自己的记录上则是六位和五位数字。10111213 我把自己的应用 Kiradex 中标签读取器的 Python 副本,跑在按这些公开格式构造的十六张合成标签上,其中两张的版式任何评级公司页面都没有展示过:它完整读对了 16 张中的 3 张,把 2 个证书编号截短,有 4 个评级壳根本没认出是评级壳,所有 ACE 标签都在其中。1415 本文按每家评级公司自己的页面描述其标签,附上改版的日期、收藏者该核对什么,以及修正读取器的简报。
TL;DR
- 钥匙是编号,不是纸。 本文读到的六家评级公司都公开了按证书编号查询的入口。PSA 的保证要通过这一查询才成立,并且“does not apply to Items that arrive with tampered or counterfeit holders and/or labels (regardless of certification status)”(不适用于封装壳和/或标签遭篡改或伪造的物品,无论其认证状态如何)。12
- 等级是一个数字加上旁边的文字。 PSA 定义了六个修饰标记(OC、ST、PD、OF、MK、MC),以及一个没有数字的“AUTHENTIC”结果;九个无分数代码中有七个,在评级员酌情决定并应送评人要求的情况下,仍可能得到标注为 Authentic 或 Authentic Altered 的封装壳;PSA 还说,出于技术原因它“does not always print the term “Altered” on the label itself”(并不总是在标签上印出“Altered”一词)。16115 CGC 的现行量表在 Gem Mint 10 之下有自己的“Mint+ 9.5”,而它的旧版 Gem Mint 9.5 现在按 10 分计。45
- 标签的日期来自评级公司自己的公告。 PSA 有日期的改动是 2008 年 2 月 12 日、2013 年 11 月 12 日、2017 年 6 月 14 日(LightHouse 标签)、2019 年 1 月 1 日、2024 年 5 月 14 日(新封装壳)和 2024 年 6 月 19 日(仅签名物品的蓝标);CGC 的新标签于 2023 年 6 月 20 日公布。在 psacard.com 上没有找到日期为 2023 年的 PSA 标签改版。17181920212223
- 公布防伪特征的是 PSA 和 CGC;TAG 介绍的是一种扫描核验。 PSA 列出了易褪油墨、UV 标志图案、LightHouse 标志和二维码;CGC 列出了“microprinting, UV ink, holographic foil and a unique certification number and barcode”(微缩印刷、UV 油墨、全息箔以及唯一的证书编号和条形码);TAG 在二维码背后放了 Proof Mark。Beckett 只有一句话,本文读到的 SGC 页面没有任何描述,ACE 的页面只介绍了地址核对。242511262728
- Beckett 只能读存档副本,而且它的停机比居中度一文说的开始得更早。 状态页注明的日期是 2026 年 10 月 2 日,但 2026 年 9 月 19 日的一份存档快照已经显示 Beckett 的平台处于下线状态,而它的卡牌查询在 8 月 19 日的快照里还能用。293031
- 这对 Kiradex 意味着什么。 简报如下:按各评级公司公布的形状读取证书编号(SGC 的连字符、TAG 的字母、ACE 的五位和六位);保留等级旁边的文字(修饰标记、标注、Pristine 还是 Gem);把每家评级公司自己的查询作为链接提供,绝不由应用自己去抓取;清楚说明读到了什么、没读到什么;只提供每家评级公司实际会给的等级。14323334
1. 标签是做什么用的
评级壳是一个密封外壳,里面装着一张印好的标签(在 TAG,文字则直接印在外壳内部);按我的理解,标签是评级公司那里一份记录的简短摘要。有两家评级公司明确说编号只属于一张卡。PSA 的术语表:“PSA gives every graded card a certification number”(PSA 给每张评级卡一个证书编号),它的常见问题则把 Cert ID 称为“the unique number found on your PSA-graded label”(您的 PSA 评级标签上的唯一编号)。CGC 2020 年介绍封装壳的文章说“a unique certification number identifies a card”(唯一的证书编号标识一张卡),而它如今的标签上印有“a unique certification number and barcode”(唯一的证书编号和条形码)。3353625 其他几家说得更少。TAG 的流程页在购买与送评一步写道“Unique ID numbers are assigned to both the cards and the order”(卡牌和订单都会被分配唯一的 ID 编号),但没有说这个 ID 就是证书编号;Beckett 的常见问题提到“a specific id and a bar coded serial number”(一个特定的 ID 和一个带条形码的序列号);本文读到的 SGC 和 ACE 页面没有提及。3726 PSA 在评级之前就给卡编号:它流程的第五步写道“Order ID stickers with unique certification numbers are placed on each Card Saver in the order”(把带有唯一证书编号的订单 ID 贴纸贴到订单中的每个 Card Saver 上),之后才是研究、评级和打印标签。38 我自己应用里的副本编辑器,已经在页脚告诉收藏者同样的事:“The certificate number is printed on the case’s label. It is that case’s alone.”(证书编号印在外壳的标签上。它只属于那一个外壳。)34
评级公司说的三件事,让编号而不是纸成为该核对的东西。
PSA 的保证要通过查询才成立。 它适用于索赔人,“provided that the Card had an active certification number on the cert lookup feature of the PSA website at the time it was purchased”(前提是这张卡在购买时于 PSA 网站的证书查询功能上有一个有效的证书编号),并且“does not apply to Items that arrive with tampered or counterfeit holders and/or labels (regardless of certification status)”(不适用于封装壳和/或标签遭篡改或伪造的物品,无论其认证状态如何)。1
评级公司直言评级壳会遭到攻击。 PSA 的保证页面写道:“some unscrupulous people occasionally try to defraud collectors by removing Items from PSA holders, replacing them with lower grade, altered, and/or counterfeit Items, and then resealing the holders. In some cases, they may also tamper with a genuine label and/or replace it with a fraudulent label altogether.”(一些不法之徒偶尔会从 PSA 封装壳中取出物品,换成等级更低、经过改动或伪造的物品,再把封装壳重新封好,以此欺骗收藏者。有时他们还会篡改真标签,或干脆换成假标签。)1 TAG 专门有一个页面列出已撤销的编号,上面写着“This TAG Certification number is no longer active.”(此 TAG 证书编号已失效。)并列出七条原因,其中包括“The slab was cracked, altered, or resealed.”(评级壳被撬开、改动或重新封装。)和“The certification was voluntarily surrendered.”(证书已被主动放弃。)3915
每家评级公司都提供按编号核验。 PSA 的通讯页面(一条没有日期的条目)说,它的“online Certification Verification page and PSA app allow customers to scan the barcode on their item and verify its authenticity”(在线证书核验页面和 PSA 应用可以让客户扫描物品上的条形码并核验其真伪)。38 CGC 2020 年的封装壳文章把收藏者引向“CGCcards.com/verify”。36 ACE 的网站提供“Lookup an Ace Grading graded collectible by certification number”(按证书编号查询 Ace Grading 评级过的收藏品)的功能,它的认证页面告诉扫描其标签的收藏者“check the URL in your browser”(检查浏览器中的网址),并给出这个地址:“https://acegrading.com”。4028 Beckett、SGC 和 TAG 也各有自己的查询页面,下文逐家说明。311041
各个字段是什么
本文读到的评级公司页面,没有一家把标签上的所有字段列全。Beckett 的常见问题和 CGC 2023 年的公告各用一句话说明标签上印了什么,其他几家只是顺带提到字段,因此下面的清单是把各家页面点名的内容拼起来的,其中 PSA 的部分是我对它保证条款的理解。1262312
- 年份和系列。 PSA 的保证把“mechanical errors”(机械性错误)排除在外,例如标签上的日期“does not match the date printed on the Item”(与物品上印的日期不符),这说明标签上有日期;Beckett 的常见问题说“Each label will feature the set name, the grade and a specific id and a bar coded serial number”(每张标签都会印有系列名称、等级、一个特定的 ID 和一个带条形码的序列号);ACE 的证书记录列出了“Release Year”和“Set”。12612
- 卡牌、编号和版本。 PSA 的同一条款涵盖了“with respect to the Item’s specification, set, variation, or parallel”(关于物品的规格、系列、版本或平行版)的标错;CGC 2023 年的标签“provides a detailed description of the card”(提供卡牌的详细描述);ACE 的记录列出了“Name”“Number”“Language”和“Variant”。12312
- 等级,以文字和数字表示。 自 PSA 2008 年 2 月 12 日的改动起,“the grade number (8) will now appear directly below the description of the grade (NM-MT) on the right side of the label”(等级数字(8)现在会出现在标签右侧等级描述(NM-MT)的正下方)。17
- 修饰标记或标注。 PSA 的 OC、ST、PD、OF、MK 和 MC 跟在数字后面,它的术语表把其中一个与数字连写成“Mint 9oc”;ACE 的 Off-Center 修饰标记意味着“appending OC to the grade”(在等级后加上 OC);PSA 的“AUTHENTIC”出现在没有给出数字的位置;CGC 则“will print Authentic Altered in the grade box”(会在等级栏印上 Authentic Altered)。163424
- 证书编号和条形码。 Beckett 的标签上有“a bar coded serial number”(一个带条形码的序列号);CGC 的标签上有“a unique certification number and barcode”(唯一的证书编号和条形码);PSA 的术语表在说到证书编号时写道“It can be found on the PSA label”(可以在 PSA 标签上找到),它的应用扫描的是“the barcode on their item”(物品上的条形码)。2625338 说明编号印在标签哪一面的已保存页面只有一个:CGC 2020 年的封装壳文章,“On the back of the label, a unique certification number identifies a card.”(在标签背面,唯一的证书编号标识一张卡。)36 PSA 的页面、Beckett 的常见问题和 CGC 现在的封装壳页面都没有说明;TAG 把编号放在“left of the QR code”(二维码左侧)。24262511
- 标签背面的二维码。 在 PSA(自 2017 年的标签起)和 CGC 现行标签上都有,后者见其封装壳页面的描述;CGC 2020 年的文章提到了二维码,但没有说位置。242536
所以我理解 PSA 的标签至少印有年份、系列、卡牌及其版本,并与等级和证书编号并列;本文读到的 PSA 页面没有一个给出字段清单。143
评级公司自己页面上点名的字段,画成通用方框和占位文字;TAG 印在外壳内,而不是纸上。44
2. 各家的标签,依据各家自己的页面
我在 2026 年 10 月 5 日阅读并保存了每家评级公司自己的页面;页面文字由浏览器中的脚本生成的评级公司(SGC),用无头浏览器渲染。居中度一文前一天保存的页面直接沿用,日期仍记为 10 月 4 日。45 引用之前,我核对了每个页面的发布方:PSA 的页面带有“© 2026 Collectors Holdings, Inc.”;CGC 的页面带有“Certified Guaranty Company, LLC”和“CGC is part of the Certified Collectibles Group”;SGC 的是“SGC, LLC”;TAG 的网站属于 Technical Authentication & Grading;ACE 的网站属于在英格兰和威尔士注册的 Ace Grading Ltd。45 搜索结果里还出现了一些名字和评级公司相似的收藏工具和卖家网站;它们只作线索,下文没有任何内容以它们为依据。46
有四类页面无法读取。Beckett 的网站处于下线状态,所以 Beckett 的内容来自它的状态页和 Wayback Machine 快照,每份都注明日期。调研笔记记录,PSA 的证书页面和数量报告、CGC 的证书查询,以及 ACE 的查询索引和数量报告,对自动化请求都返回了 HTTP 403 和 Cloudflare 机器人检查;我没有采取任何手段绕过,所以这些页面都没有访问到,文件夹里也没有保留这些质询响应的副本。以 PSA 数量报告的名字保存的那一个文件是另一种障碍:它是 PSA 的登录页面,下文会说明。SGC 的查询表单带有 reCAPTCHA;它的文字我读了,表单没有使用。4547484910
PSA
一张卡如何得到标签。 按 PSA 自己列出的步骤,它的流程是:“Order ID stickers with unique certification numbers are placed on each Card Saver in the order”(把带有唯一证书编号的订单 ID 贴纸贴到订单中的每个 Card Saver 上);“Your cards are researched so they can be properly identified on the PSA label”(对您的卡进行研究,以便在 PSA 标签上正确标识);“PSA’s LightHouse labels are printed showing each card’s information and grade”(打印显示每张卡信息和等级的 PSA LightHouse 标签);出于安全考虑,“The card and LightHouse label are sonically sealed in PSA’s tamper-evident holder”(卡牌和 LightHouse 标签以超声波密封在 PSA 的防篡改封装壳中)。38
等级用词。 PSA 的标准给每个数字配了一个简短描述,PSA 2008 年的标签文章展示了其中一个与数字一起出现在标签上:“the grade number (8) will now appear directly below the description of the grade (NM-MT)”(等级数字(8)现在会出现在等级描述(NM-MT)的正下方)。所以我把下表理解为 PSA 标签与数字一起印出的文字:161715
| PSA 等级 | 文字 |
|---|---|
| 10 | GEM-MT |
| 9 | MINT |
| 8 | NM-MT |
| 7 | NM |
| 6 | EX-MT |
| 5 | EX |
| 4 | VG-EX |
| 3 | VG |
| 2 | GOOD |
| 1.5 | FR |
| 1 | PR,以及第二个条目 PR-FR |
半分只存在于一个区间内:“Cards that exhibit high-end qualities within each particular grade, between PSA 2 and PSA 9, may achieve a half-point increase.”(在 PSA 2 到 PSA 9 之间的各个等级中表现出高端品质的卡,可以获得半分的提升。)16 我理解这意味着 PSA 没有 9.5;FR 1.5 是上表中单独的一个等级。16
六个修饰标记。 PSA 定义了六个两字母的修饰标记,其中四个共用同一条规则。1615
- OC,off center(偏心): “Cards that are off center will either by designated “OC” or will have a numerical grade that reflects the minimum centering allowed for the grade.”(偏心的卡要么被标为“OC”,要么得到一个反映该等级所允许的最低居中度的数字等级。)16
- ST,staining(污渍): “Cards with staining will either by designated “ST” or will have a numerical grade that reflects the minimum staining allowed for the grade.”(有污渍的卡要么被标为“ST”,要么得到一个反映该等级所允许的最低污渍程度的数字等级。)16
- PD,print defect(印刷缺陷): “Cards with printing defects will either be designated “PD” or will have a numerical grade that reflects the minimum print defects allowed for the grade.”(有印刷缺陷的卡要么被标为“PD”,要么得到一个反映该等级所允许的最低印刷缺陷的数字等级。)16
- OF,out of focus(失焦): “Cards that are out of focus or out of register with either be designated “OF” or will have a numerical grade that reflects the minimum focus standards allowed for the grade.”(失焦或套印不准的卡要么被标为“OF”,要么得到一个反映该等级所允许的最低对焦标准的数字等级。)16
- MK,marks(笔迹): “Any and all cards with writing, ink marks, pencil marks, etc. or evidence of the impression left from the act of writing will be designated “MK.””(凡是有字迹、墨迹、铅笔痕等,或有书写留下压痕的卡,一律标为“MK”。)16
- MC,miscut(切割偏差): “Any and all cards that exhibit an atypical cut for the issue, which may result in portions of the subject card being cut off or more than one card being visible, will be designated “MC.””(凡是切割对该批发行而言不典型、可能导致卡的部分被切掉或能看到不止一张卡的,一律标为“MC”。)16
PSA 自己的文字里“by”和“be”混用,引文保留原样。术语表在写带修饰标记的等级时把字母和数字连在一起:一张符合 Mint 9 标准但居中度不够的卡,“would be designated Mint 9oc”(会被标为 Mint 9oc)。3 它没有说标签上如何留空格。把规则的前后两半放在一起读,按我的理解,带 OC 的 PSA 9 与不带 OC 的 PSA 9 是两种不同的陈述:普通的 9 满足 9 分的居中度,带 OC 的卡则不满足。16
没有数字时。 PSA 的标准列出两种不带数字等级的结果:16
- AUTHENTIC(等级代码 N0):“This means that PSA is only certifying that the item is genuine, without a numerical grade.”(这意味着 PSA 只认证该物品是真品,不给数字等级。)同一条目给出了可能出现这种情况的原因:“This may be due to the existence of an alteration, one with malice or otherwise, a major defect or the original submitter may have requested that PSA encapsulate the card without a grade.”(这可能是因为存在改动,无论是否出于恶意;存在重大缺陷;或原送评人要求 PSA 不评分直接封装。)并这样概括这张标签:“The “Authentic” label means that the item, in our opinion, is real but nothing more.”(“Authentic”标签意味着,在我们看来,该物品是真的,但仅此而已。)16
- ALTERED AUTHENTIC(AA):“This means that while PSA is certifying that the item is genuine, due to the existence of alterations, the item cannot receive a numerical grade.”(这意味着 PSA 认证该物品是真品,但由于存在改动,它不能获得数字等级。)这类物品“genuine with the presence of some type of alteration”(是真品,但存在某种改动),而这一标注“is used on a case-by-case basis, space permitting, and “AA” must be listed on the submission form as the desired minimum grade”(视具体情况、在空间允许时使用,并且必须在送评单上把“AA”填为期望的最低等级)。16
九个无分数代码,以及每个代码允许这张卡怎样处理。 PSA 在同一个标题下列出了九个代码,从 N1 Evidence of Trimming 到 N9 Don’t Grade:“If your card is returned without a numeric grade in a card saver sleeve, that determination was made based on one of the following reasons”(如果您的卡装在 card saver 卡套里、没有数字等级地被退回,这一判定是基于以下原因之一)。所以每个代码都是卡被退回、没有等级的一个原因。接着每个代码自己的文字说明这张卡是否仍可封装,九个代码分成四种情况:1615
- 五个可以封装为 Authentic Altered: N1 Evidence of Trimming、N2 Evidence of Restoration、N3 Evidence of Recoloration、N5 Altered Stock 和 N7 Evidence of Cleaning 都写道“this designation can qualify for encapsulation as “Authentic Altered” at the grader’s discretion and if “AA” is listed on the submission form as the desired minimum grade”(由评级员酌情决定,并且如果送评单上把“AA”填为期望的最低等级,此标注可以封装为“Authentic Altered”)。
- 两个可以封装为 Authentic: N6 Minimum Size Requirement 针对“significantly undersized according to factory specifications”(按出厂规格明显偏小)的卡,它“can qualify for encapsulation as “Authentic” only”(只能封装为“Authentic”);N8 Miscut 针对“the factory cut is abnormal for the issue”(出厂切割对该批发行而言不正常)的卡,它“can qualify for encapsulation as “Authentic””(可以封装为“Authentic”);两者都附有条件“at the grader’s discretion and if “Auth” is listed on the submission form as the desired minimum grade”(由评级员酌情决定,并且送评单上把“Auth”填为期望的最低等级)。
- 一个永远不能: N4 Questionable Authenticity 针对“appears to be counterfeit”(看起来是伪造的)卡,它“would never qualify for encapsulation under any circumstance”(在任何情况下都不能封装)。
- 一个不能,除非判定被推翻: N9 Don’t Grade“does not qualify for encapsulation”(不能封装),但“If additional information from two or more verified or hobby-approved resources are provided for the issue, the decision could be reversed upon resubmittal.”(如果能为该批发行提供来自两个或以上经核实或收藏界认可来源的补充信息,重新送评时判定可能被推翻。)
PSA 的常见问题给出了同样这些代码的默认处理:因修边、修复、补色、真伪存疑、纸张改动或清洁而被拒的物品“will be returned not encapsulated”(会不经封装退回),得到 N6、N8 或 N9 的物品则“will not be charged grading”(不收评级费)。35 标准页面补上了常见问题略去的路径:按九个代码中的七个被退回的卡,在评级员判断并且送评人在单上提出要求的情况下,仍可以进入封装壳。两个页面都没有说这类标签上是否印出代码本身。1635
因此,用 PSA 的话说,AUTHENTIC 或 AUTHENTIC ALTERED 标签可能意味着什么。 AUTHENTIC 标签是一张 PSA 称为“real but nothing more”(是真的,但仅此而已)的卡,原因见于 PSA 的文字:“an alteration, one with malice or otherwise”(改动,无论是否出于恶意)、“a major defect”(重大缺陷)、送评人要求“that PSA encapsulate the card without a grade”(PSA 不评分直接封装),或者通过 N6 和 N8,一张“significantly undersized according to factory specifications”(按出厂规格明显偏小)的卡,或一张“factory cut is abnormal for the issue”(出厂切割对该批发行而言不正常)的卡。16 AUTHENTIC ALTERED 标签是一张 PSA 判定为“genuine with the presence of some type of alteration”(是真品,但存在某种改动)的卡,也就是 N1、N2、N3、N5 和 N7 留下的路径。16 而前者可以代表后者。PSA 的保证“does not differentiate between the “Authentic” and “Authentic Altered” designations”(不区分“Authentic”和“Authentic Altered”两种标注),因为“PSA does not always print the term “Altered” on the label itself for technical reasons (e.g., such as character and spacing limitations)”(出于技术原因(例如字符数和空间限制),PSA 并不总是在标签上印出“Altered”一词),并说标为“Authentic”的物品“must be viewed as potentially interchangeable with “Authentic Altered””(必须视为可能与“Authentic Altered”互换)。1 标准页面去掉了“potentially”(可能),但保留了适用范围:就 PSA 保证而言,仅“Authentic”的标注“is to be considered interchangeable with “Authentic Altered””(应视为与“Authentic Altered”可互换)。16 所以仅凭一张 AUTHENTIC 标签,收藏者无法知道这张卡是否被改动过;而按我的理解,标准页面对 AA 说的“space permitting”(在空间允许时)与保证页面说的“character and spacing limitations”(字符数和空间限制),是在两个页面上给出的同一个理由。161
PSA 如何命名宝可梦系列。 我没有找到 PSA 公布的命名规则,所以以下是我对它自己三个页面的理解。505152
- CardFacts 给 Base Set 的条目加的标题是“1999 Nintendo Pokemon Game”,该系列一张卡的页面上有一个大写标题,以“1999 POKEMON GAME 74”开头,接着是卡名和 1ST EDITION:年份、游戏、编号、卡牌、版本。页面没有把它称为标签文字;我把它理解为标签上印的措辞。50
- 日文系列在系列名中带有“Japanese”,PSA 自己的页面上有两种拼法:CardFacts 的“2011 Nintendo Pokemon Japanese Black & White Psycho Drive”和价格指南的“2020 Pokémon Japanese S Promo”。5152
- 所以,按我对其 CardFacts 标题的理解,PSA 标签上的系列文字并不是系列的印刷名称:对 Base Set 来说,会是“Pokemon Game”,而不是“Base Set”。一个把标签系列文字与英文系列名比对的应用,在这些系列上找不到匹配,第 6 节会在应用的代码中追踪这一点。5053
标签的几代,依据 PSA 注明日期的文章。171819202122
| 日期(PSA 的文章) | PSA 说改了什么 |
|---|---|
| 2008 年 2 月 12 日 | 新标签用于“to distinguish cards graded after the new half-point system launch from those graded previously”(把新半分制推出后评级的卡与此前评级的卡区分开);它们“contain the same general information,”(包含相同的一般信息),等级数字位于右侧等级文字的正下方 |
| 2013 年 11 月 12 日 | 新封装壳的上半部分“envelops the bottom”(包住下半部分);插入式标签的背面以“a reflective hologram”(一枚反光全息图)取代“the simple, silver foil stamp”(简单的银色烫印) |
| 2017 年 6 月 14 日 | LightHouse 标签:“The front of the label still features a red border,”(标签正面仍有红色边框),标签文字背后是“fugitive ink”(易褪油墨);正面的 PSA 全息图“has been upgraded to proprietary Lighthouse”(已升级为专有的 Lighthouse 技术)(“Gone are the days of standard holograms”,标准全息图的时代已经过去);背面有 UV 标志图案和二维码 |
| 2019 年 1 月 1 日(2019 年 2 月 15 日的文章) | PSA/DNA 在“20 years of using blue labels,”(使用蓝标 20 年)之后,改为“red labels across the board”(全面使用红标);经 PSA/DNA 认证的物品“will receive a red label with only a generic description of the item (i.e., TRADING CARD)”(会得到一张只带物品通用描述(即 TRADING CARD)的红标) |
| 2024 年 5 月 14 日 | 新的标准封装壳,“Starting with sports card submissions this May with plans for a wider rollout”(从今年 5 月的体育卡送评开始,并计划更大范围推广):新聚合物,“20% heavier,”(重 20%),“no Mylar, no sleeve”(没有 Mylar,没有卡套);文章没有说标签有变化 |
| 2024 年 6 月 19 日(2024 年 6 月 5 日的文章) | 仅签名物品的蓝标:“Blue PSA Label : autograph-only authentication and grading. Red PSA Label : item authentication and grading (Dual Service included).”(蓝色 PSA 标签:仅签名的认证与评级。红色 PSA 标签:物品的认证与评级(含双重服务)。) |
标签的颜色说明认证的是什么。 红色是物品及其等级;自 2024 年 6 月 19 日起,蓝色只针对签名。22 2019 年 1 月 1 日之前,PSA/DNA 封装的签名也用蓝标,所以按我的理解,一张蓝色 PSA 标签的含义取决于它制作的时间。2022 PSA 2019 年的文章补充了一个判断方法,按我的理解,它适用于 2019 年 1 月 1 日起至 2024 年 6 月 19 日蓝标启用前制作的红标:“If they see an autographed card with the designation ‘trading card’ on the LightHouse label, that means that PSA has only authenticated the autograph.”(如果看到一张签名卡的 LightHouse 标签上标着“trading card”,那意味着 PSA 只认证了签名。)20
2008 年之前。 我没有找到描述更早标签的 PSA 页面;2008 年的文章只说新标签“contain the same general information”(包含相同的一般信息)。17
PSA 公布的防伪特征。 PSA 的安全页面列出,LightHouse 标签正面有“PSA LightHouse logo with on/off illumination effect”(带有明暗变化效果的 PSA LightHouse 标志)、“Classic PSA red trim connects to LightHouse”(经典的 PSA 红色边饰与 LightHouse 相连)和“Fugitive ink graphic pattern to prevent label washing”(防止标签被洗的易褪油墨图案);背面有“PSA logo with UV logo pattern”(带 UV 标志图案的 PSA 标志)、LightHouse 标志、易褪油墨,以及“QR Code for instant access to Cert Verification”(可立即访问证书核验的二维码)。24 2017 年的文章解释了这种油墨:“The same technology used on checks to prevent check washing, fugitive ink will dissolve and wash away when exposed to cleaning chemicals. Each label is adorned both front and back with this fugitive ink.”(易褪油墨采用与支票防涂改相同的技术,一旦接触清洗用化学品就会溶解洗掉。每张标签正反面都印有这种易褪油墨。)它还说“These features come in addition to other covert security features”(这些特征之外还有其他隐蔽的防伪特征),但没有描述是什么。19 安全页面给标签的升级注明了时间:“In 2017, PSA enhanced the security features found on the label used inside the PSA holder.”(2017 年,PSA 增强了 PSA 封装壳内所用标签的防伪特征。)24
封装壳。 “Tamper-evident means that if someone does attempt to violate the holder, it will leave some evidence that the holder has been compromised.”(防篡改的意思是,如果有人试图破坏封装壳,就会留下封装壳已被破坏的痕迹。)PSA 说“Since 1991, PSA has utilized a tamper-evident holder”(自 1991 年起,PSA 一直使用防篡改封装壳)来封装收藏品。35
记录上的图片。 PSA 为卡拍照并上传“to its online Certification Verification site”(到其在线证书核验网站),并称这“extremely useful for collectors looking to verify the details of an item, including its cert number, before making a purchase”(对想在购买前核实物品细节、包括证书编号的收藏者极为有用)。35
查询编号。 查询页面是 psacard.com/cert,本文保存的 23 个 PSA 页面中有 22 个链接到它;第 23 个是下文说明的数量报告文件,它没有任何链接。245415 PSA 自己的页面把单个证书链接为 /cert/<number>:一张 Base Set 卡的 CardFacts 页面在其成交记录表中以这种形式链接了 231 次,涉及 201 个不同的编号,全部是八位数字。505415 这是在一个已保存页面上的计数,不是 PSA 公布的格式。更长的形式 https://www.psacard.com/cert/<number>/psa 出现在搜索索引结果里(未保存),没有出现在任何已保存的 PSA 页面上。调研笔记记录,查询页面和一个这种长形式的地址,在 2026 年 10 月 5 日对自动化请求返回了 HTTP 403 和 Cloudflare 机器人检查;两个响应都没有保留副本,本文也没有读到任何一条证书记录。47 PSA 还运营一个只回答一个问题的公开 API:“We currently offer access to data from Cert Verification for single item searches by cert number.”(我们目前提供按证书编号进行单项搜索的证书核验数据访问。)它需要一个用用户自己的 PSA 登录生成的令牌;它的示例编号是八个字符的 00000000;一个“containing non-numeric or too few characters”(含有非数字字符或字符太少)的编号会返回“Invalid CertNo”。55
标错的标签免费更正。 “PSA will correct any mislabeled item(s) free of charge,”(PSA 会免费更正任何标错的物品),通过 Label Correction Request 办理。35 保证本身“does not cover clerical errors, or what we call “mechanical errors,””(不涵盖文书错误,即我们所说的“机械性错误”),所以标错的标签属于更正,而不是索赔。1
数量报告。 PSA 自己在 Joe Orlando 一篇没有日期的市场报告里这样描述:“a tally of every single card we have ever graded and encapsulated,”(我们评级并封装过的每一张卡的统计),并按“by set, player and grade”(系列、球员和等级)细分。还有它的局限:“The population numbers do not represent ALL CARDS IN EXISTENCE, they merely represent the ones that have been graded by PSA. The numbers also do not include all the cards that have been rejected for evidence of alteration, restoration or questionable authenticity.”(数量数字并不代表现存的所有卡,只代表经 PSA 评级的那些。这些数字也不包括所有因有改动、修复迹象或真伪存疑而被拒的卡。)56 位于 psacard.com/pop 的报告本身没有访问到。调研笔记记录,它对自动化请求返回了 HTTP 403 和 Cloudflare 机器人检查。以它的名字保存的那一个文件既不是那个响应,也不是报告:它是 PSA 的登录页面。它自己的内容说明了这一点:它携带的路由是登录页面的 signin?b=psa&r=,后面跟着经过编码的 psacard.com/pop 地址,我理解这是登录后要返回的地址;它加载的页面脚本是登录页面的;它没有标题,也没有可见文字。所以报告要么如调研笔记所记位于机器人检查之后,要么如已保存文件所示位于登录之后,无论哪种,都没有读到。47
Beckett (BGS)
网站下线了,所以 Beckett 只能从存档读取。 Beckett 日期为 2026 年 10 月 2 日的状态页说,“we detected suspicious technical activity and, out of caution, took our platforms offline,”(我们检测到可疑的技术活动,出于谨慎让平台下线),“The extended downtime reflects the time needed to conduct a thorough forensic investigation,”(停机时间延长,是因为需要进行彻底的取证调查),以及“Core certification, grade records, and historical population databases remain intact and uncompromised.”(核心认证、等级记录和历史数量数据库完好无损,未遭入侵。)29 服务分阶段恢复,查询在第一阶段:“Phase 1: Customer Accounts, Online Submission Center, Certificate Look-up and Pop Reports”(第一阶段:客户账户、在线送评中心、证书查询和数量报告)。29 10 月 5 日请求 Beckett 的评级量表和卡牌查询,都被重定向到那个维护站点。2945 因此下面每一条关于 Beckett 的事实都来自一份按日期注明的 Wayback Machine 快照,网站恢复后可能有所不同。
标签上写了什么。 Beckett 的常见问题,2025 年 3 月 26 日的快照:“A label will run partially across the top of the holder. Each label will feature the set name, the grade and a specific id and a bar coded serial number.”(标签会横跨封装壳顶部的一部分。每张标签都会印有系列名称、等级、一个特定的 ID 和一个带条形码的序列号。)26 总分由“the 4 sub grades on the front label of the card holder”(卡壳正面标签上的 4 项子分数)得出,所以按我的理解,一张带子分数的 Beckett 标签上有五个数字,总分就是等级。26
标签错误是 Beckett 唯一受理的异议。 “Disputed grades on cards are limited to typographical errors on the label (i.e., the wrong set name).”(对卡牌等级的异议仅限于标签上的印刷错误(例如系列名称错误)。)26
用 Beckett 的话说,防伪只有一句话: “Extreme precautions have been taken to prevent counterfeiting of the label and the holder.”(已采取极其严格的预防措施,防止标签和封装壳被伪造。)已保存的 Beckett 页面没有一个描述具体特征。26
黑标,自 2014 年 11 月 28 日起。 Beckett 当天的帖子,读自 2022 年 8 月 16 日的快照:“A card worthy of four “10” subgrades is worthy of a special label. Starting today, each card that reaches this quad-10 level will receive a special black label showing that the ultimate grade has been reached.”(一张配得上四项“10”子分数的卡,配得上一张特别的标签。从今天起,每张达到四个 10 水平的卡都会得到一张特别的黑标,表明已达到最高等级。)接着写道:“The black label is for modern cards only,”(黑标仅适用于现代卡),且“not valid for any BVG cards (1980 and older)”(不适用于任何 BVG 卡(1980 年及更早))。9 帖子把它与“the elusive BGS Pristine 10”(难得一见的 BGS Pristine 10)相对照,而 Beckett 的量表没有别的 10 分:它的最高两档是“Pristine 10”和“Gem Mint 9.5”。98 所以按我的理解,Beckett 在顶端的区分,是同一个等级上的两种标签:四项子分数都是 10 的 Pristine 10 用黑标,其余的 Pristine 10 用标准标签。98
金标和银标。 在已保存的 Beckett 页面上,黑色以外的标签颜色只出现在一个评论串里,不在帖子正文中:2014 年黑标帖子下面,一条署名“Mike”、日期为 2014 年 11 月 29 日的评论说“BGS 9.5’s and 10’s will always be Gold,”(BGS 的 9.5 和 10 永远是金标),除非一张 10 分卡四项子分数都是 10,那样就用黑标。页面没有说明评论者的身份;同一个名字在该评论串中署名了三条评论,其中一条回答了 BGS 重新贴标的问题,另一条称赞了 BGS。除这条评论外,金标只在二手网站上有描述,已保存的 Beckett 页面也没有提到银标,所以本文不为 Beckett 的其他等级列出配色方案。946
开放的评级服务,见维护页面的两份保存副本。 对“Which grading services are currently available?”(目前提供哪些评级服务?)这个问题,2026 年 9 月 19 日的快照回答:“Base (with subgrades), Standard, and Express are currently available through the temporary submission form.”(目前可通过临时送评表单提交 Base(含子分数)、Standard 和 Express。)并补充“Availability may change”(可用性可能变化)。30 同一页面在 2026 年 10 月 4 日保存时(那时 beckett.com 的评级页面都重定向到这里),对同一个问题的回答是:“Express is currently available through the temporary submission form,”(目前可通过临时送评表单提交的是 Express),而对 Base 和 Standard 为何不可用的问题,回答是“Base and Standard card grading submissions are temporarily paused as we focus on existing orders and maintaining estimated turnaround times.”(Base 和 Standard 卡牌评级送评暂停,以便我们专注于现有订单并维持预计的处理周期。)57 所以在 10 月 4 日,只有 Express 接受新送评。两份副本都没有说 Standard 和 Express 的标签是否带子分数。3057
查询编号。 卡牌查询在 2026 年 8 月 19 日的快照中还能用:“Verify the validity of Beckett certificates by entering the cert number,”(输入证书编号核验 Beckett 证书的有效性),可选 BGS、BVG 或 BCCG,并邀请卖家:“You can link directly to this page from your auction ads of eBay and other auction sites.”(您可以从 eBay 和其他拍卖网站的拍卖广告直接链接到此页面。)31 这个页面是一个表单,源代码中的字段名是 item_type 和 item_id;本文读到的 Beckett 页面没有一个给出带证书编号的网址。31
编号的格式和位置: “a specific id and a bar coded serial number.”(一个特定的 ID 和一个带条形码的序列号。)本文读到的 Beckett 页面没有给出它的长度,常见问题也没有说它印在标签哪一面。26(我应用里的测试用的是一个十位数的占位编号。)58
数量报告, 见 2025 年的常见问题:“Our Population Report is available at no extra charge. Cards graded by Beckett Grading Services can be verified on our Graded Card Look Up site.”(我们的数量报告不额外收费。经 Beckett Grading Services 评级的卡可在我们的 Graded Card Look Up 网站上核验。)以及:“It is updated daily”(每天更新)。26
等级, 按 2026 年 5 月 3 日存档的评级量表,从“Poor 1”到“Pristine 10”,顶端之下一档是“Gem Mint 9.5”;Beckett 没有 Gem Mint 10。黑标不是单独的等级,而是四项子分数都是 10 的标签。89
CGC Cards
2023 年的标签。 2023 年 6 月 20 日,Certified Collectibles Group 宣布“In July, CCG will combine CGC Trading Cards® and Certified Sports Guaranty® (CSG®) into CGC Cards,”(7 月,CCG 将把 CGC Trading Cards® 和 Certified Sports Guaranty®(CSG®)合并为 CGC Cards),并推出“a sleek new label that blends seamlessly with cards”(一款与卡牌浑然一体的简洁新标签)。这张标签“provides a detailed description of the card, along with its grade, its unique CGC certification number and a QR code to facilitate quick verification”(提供卡牌的详细描述,以及等级、唯一的 CGC 证书编号和便于快速核验的二维码)。23
Pristine 10 标签。 同一则公告为 Pristine 10 承诺了“a lux, gold label worthy of the chase grade”(一张配得上这一梦寐以求等级的奢华金标)。23 如今的量表:“All cards that merit a CGC Pristine 10 grade will receive a special CGC Cards Pristine 10 label.”(所有够得上 CGC Pristine 10 等级的卡,都会得到一张特别的 CGC Cards Pristine 10 标签。)4
CGC 在同一个页面上对 Pristine 10 有两种描述。 标签部分说这张标签用于“cards that are flawless under 10-times magnification”(在 10 倍放大下毫无瑕疵的卡);等级说明则说“A Pristine 10 is a virtually flawless card to the naked eye.”(Pristine 10 是一张肉眼看来几乎毫无瑕疵的卡。)两句话都在已保存的评级量表页面上;我照原文引用,不去调和它们。4
随标签而来的等级变化。 “Cards previously graded Gem Mint 9.5 are exactly equivalent to Gem Mint 10 under the updated grading scale”(此前评为 Gem Mint 9.5 的卡,在更新后的评级量表下与 Gem Mint 10 完全等同);“The Perfect 10 grade, which was seldom used, will no longer be assigned”(很少使用的 Perfect 10 等级将不再授予);“Sub-Grades will also no longer be offered.”(子分数也将不再提供。)23 量表保留了一份旧版对照:“CGC Trading Cards Gem Mint 9.5”和“CSG Gem Mint 9.5”对应“CGC Cards Gem Mint 10”,两个 Perfect 10 都是“Retired grade; retains Perfect 10 status”(已停用的等级;保留 Perfect 10 的地位)。4
所以一张较早的 CGC 标签可能写着 9.5,意思却是 10。 CGC 的帮助中心说,收藏者可以保留自己的 Gem Mint 9.5,“and they will be considered Gem Mint 10s in Verify CGC Cards Certification, the CGC Cards Population Report and the CGC Cards Registry,”(它们在 Verify CGC Cards Certification、CGC Cards Population Report 和 CGC Cards Registry 中都会被视为 Gem Mint 10),无需换壳。5
而一张现行的 CGC 标签写着 9.5,意思可能完全不同。 如今的量表有自己的 Mint+ 9.5,即“a card that displays premium eye appeal for a Mint card,”(就 Mint 卡而言外观格外出众的卡),位于 Gem Mint 10 之下。4 所以 CGC 标签上的“9.5”要么是 Gem Mint,现在按 10 分计,要么是 Mint+,低于 10 分。在标签上,旁边的文字 GEM MINT 或 MINT+ 说明是哪一种;按我的理解,标签的种类也能说明:Gem Mint 9.5 属于 CGC Trading Cards 和 CSG 的标签,CGC 说这些标签“are no longer being offered”(已不再提供),而它 2023 年的公告说,换到新 CGC Cards 标签上的 Gem Mint 9.5“will receive the CGC Cards Gem Mint 10 grade”(会得到 CGC Cards Gem Mint 10 的等级)。523 CGC 现行的二十个标准卡等级:415
| 文字 | 数字 |
|---|---|
| Pristine | 10 |
| Gem Mint | 10 |
| Mint+ | 9.5 |
| Mint | 9 |
| NM/Mint+、NM/Mint | 8.5、8 |
| Near Mint+、Near Mint | 7.5、7 |
| Ex/NM+、Ex/NM | 6.5、6 |
| Excellent+、Excellent | 5.5、5 |
| VG/Ex+、VG/Ex | 4.5、4 |
| Very Good+、Very Good | 3.5、3 |
| Good+、Good | 2.5、2 |
| Fair | 1.5 |
| Poor | 1 |
2020 年的标签。 CGC Trading Cards 2020 年 7 月 13 日的封装壳文章:“If requested, CGC Trading Cards provides Sub-Grades, which give a more nuanced description of a card’s condition”(如有要求,CGC Trading Cards 会提供子分数,对卡牌品相给出更细致的描述);“On the back of the label, a unique certification number identifies a card”(在标签背面,唯一的证书编号标识一张卡);“A QR code enables you to quickly look up a card and its images at CGCcards.com/verify.”(通过二维码可在 CGCcards.com/verify 快速查询卡牌及其图片。)36 按我的理解,在 2020 年到 2023 年改动之间贴标的 CGC 评级壳可能带子分数,改动之后贴标的则没有。2020 年的文章是唯一说明证书编号印在哪一面的已保存 CGC 页面;2023 年的公告和如今的封装壳页面提到编号,但没有说位置。362325
以标注代替数字。 “Authentic AU”“used for cards that are authentic and unaltered but cannot receive a numeric grade”(用于真品、未经改动但不能获得数字等级的卡);对于“Authentic Altered AA”,“CGC Cards will print Authentic Altered in the grade box if a card is authentic but has been altered”(如果卡是真品但经过改动,CGC Cards 会在等级栏印上 Authentic Altered);“Authentic ART”“used for cards with custom art applied to the surface”(用于表面有定制艺术加工的卡)。4
标签的颜色关系到保证。 CGC 的保证承诺收藏品“has not been overgraded”(没有被评高),同一条款又按标签颜色设了例外:“Grade is NOT guaranteed for cards encapsulated with CGC’s green Qualified Grade Label”(以 CGC 绿色 Qualified Grade Label 封装的卡,等级不受保证)。(保证还列出了其他除外情形,签名就是其中之一。)59
CGC 公布的防伪特征。 “To prevent against counterfeiting, the CGC Cards label features microprinting, UV ink, holographic foil and a unique certification number and barcode.”(为防伪造,CGC Cards 标签采用了微缩印刷、UV 油墨、全息箔以及唯一的证书编号和条形码。)外壳“ultrasonically-welded”(经超声波焊接),“resists impacts and tampering,”(耐冲击、防篡改),并且“On the back of the label, a QR code enables you to quickly look up a card and its images on the CGC Cards website.”(标签背面的二维码可让您在 CGC Cards 网站上快速查询卡牌及其图片。)25
查询编号。 工具位于 https://www.cgccards.com/certlookup/,单个证书在搜索索引中以 https://www.cgccards.com/certlookup/<number>/ 的形式出现,一个搜索索引标题中有一个十位数的例子(该标题是在搜索结果中看到的,不在已保存的页面上)。调研笔记记录,两者在 2026 年 10 月 5 日对自动化请求都返回了 HTTP 403 和 Cloudflare 机器人检查;都没有访问到。48 本文读到的 CGC 页面没有一个给出证书编号格式。43
数量报告对集换式卡牌游戏按“by game, era and set”(游戏、年代和系列)组织。它的免责声明:“Census / Population Reports only reflect the quantities and types of collectibles previously graded by the CCG Companies, and are not an indicator of value or rarity.”(普查/数量报告只反映 CCG 旗下公司此前评级过的收藏品数量和种类,并不代表价值或稀有度。)60 在那里找不到某张卡时,CGC 建议在其核验工具中输入证书编号,在那里“Below the card images, you will find a link to see your card in the CGC Cards Population Report.”(在卡牌图片下方,您会找到一个在 CGC Cards Population Report 中查看这张卡的链接。)61
SGC
两种证书编号格式,按标签颜色区分。 SGC 的查询页面:“For black labels, enter all 7 digits. For green and white labels, enter all 11 characters (XXXXXXX-XXX).”(黑标请输入全部 7 位数字。绿标和白标请输入全部 11 个字符(XXXXXXX-XXX)。)10
查询是一个带 reCAPTCHA 的表单, 位于 gosgc.com/cert-code-lookup,本文读到的 SGC 页面没有一个给出带证书代码的网址。10 SGC 的应用提供同样的核验:“Use the Cert Verification feature to access high-resolution images and look up important information about your SGC cards.”(使用 Cert Verification 功能查看高分辨率图片,并查询您 SGC 卡牌的重要信息。)62
标签字段和防伪特征:读到的 SGC 页面没有描述。 我渲染了 SGC 的量表、服务、应用、支持和数量报告页面,没有一个列出标签上印什么或用什么保护标签。查询页面提到的黑、绿、白之外,关于 SGC 封装壳和标签颜色的描述只在二手网站上,本文不予采用。2746
等级用词。 SGC 的量表把等级命名为“10 PRI”(Pristine)、“10 GM”(Gem)、“9.5”(MINT+)、“8.5”(NM/MT+)、“7”(NRMT)等等;它的两个 10 分是不同的等级。6
数量报告是按系列搜索的,附有一条说明:“With over 28 years of data included in the SGC Pop Report, inconsistencies may be present.”(SGC Pop Report 收录了 28 年以上的数据,可能存在不一致之处。)63
TAG
没有纸质标签。 “Say goodbye to distracting paper flips. Instead, the TAG grades and data are permanently inscribed directly inside the slab.”(告别碍眼的纸标签。TAG 的等级和数据直接永久地刻在评级壳内部。)64 TAG 的流程页称之为“UV-cured text inside the slab, as well as the QR code to access the card’s DIG report and Proof Authentication features for authenticity verification”(评级壳内部经 UV 固化的文字,以及用于访问卡牌 DIG 报告和 Proof Authentication 功能以核验真伪的二维码)。37
编号在哪里,长什么样。 “Simply locate the card’s CERT# (left of the QR code),”(只需找到卡上的 CERT#(二维码左侧)),以及“The CERT# format is typically 1 Letter followed by 7 Numbers.”(CERT# 的格式通常是 1 个字母后跟 7 个数字。)11 证书搜索页面写道“Enter any card’s 8 digit CERT # below”(在下方输入任意卡的 8 位 CERT #)。41 TAG 的帮助中心则说:“All TAG Grading certification numbers are a mix of numbers and letters which are generated randomly.”(所有 TAG Grading 证书编号都是随机生成的数字与字母混合。)65 这三种说法都出自 TAG 自己,但并不完全一致:一个字母加七个数字是八个字符,却不是八位数字,而“a mix”(混合)还允许别的排列。114165
查询地址。 TAG 的证书搜索页面在自己的脚本里构造地址,const TAG = "https://my.taggrading.com/card/";,后面接上输入的编号。41 本文没有抓取任何记录。
核验评级壳本身。 “Locate the Proof Mark on the back of the slab, directly behind the QR code,”(在评级壳背面、二维码正后方找到 Proof Mark),然后用免费的 Proof Authentication 应用扫描;“Every Proof Mark is confirmed & scanned before leaving the TAG facility.”(每个 Proof Mark 在离开 TAG 工厂前都经过确认和扫描。)11
已撤销的编号会这样显示。 “This TAG Certification number is no longer active.”(此 TAG 证书编号已失效。)页面列出七条原因,从“The slab was tampered with or compromised.”(评级壳遭篡改或破坏。)到“The certification was voluntarily surrendered.”(证书已被主动放弃。)3915
两个 10 分和一个 1,000 分量表;按我的理解,每张卡都在这个量表上打分,而只有一个报告档次会完整显示分数。 TAG 的量表给 Pristine 10 的分数是 990 到 1000,Gem Mint 10 是 950 到 989,并且“Half points are included on every grade level except for between 9 and 10.”(除 9 和 10 之间外,每个等级都有半分。)7 TAG 把它的评级系统描述为在 1,000 分量表上打分:它“scores on a precise 1000 point scale & translates into an industry standard 1-10 Grade,”(在精确的 1000 分量表上打分,并换算为行业标准的 1 到 10 等级),它的流程页说该系统生成“overall scores for the card on a 1-10 and 1000-point TAG Score scale.”(卡牌在 1 到 10 和 1000 分 TAG Score 量表上的总分)。6437 卡主能拿到什么取决于报告档次,用首页自己的话说:“Standard DIGs focus on the core defects that impacted the grade, aka the “DINGS.” DIG Plus Reports breakdown the card into further detail with precise 3 digit scoring.”(标准 DIG 关注影响等级的核心缺陷,也就是“DINGS”。DIG Plus 报告以精确的三位数评分对卡牌做更细致的拆解。)同一页面说“Slabs graded with DIG Report Plus receive a precise 1000 pt TAG Score,”(以 DIG Report Plus 评级的评级壳会得到精确的 1000 分 TAG Score),DIG 页面则说排行榜名次“is only available to cards which have been graded via the TAG S service as a 3 digit score is needed”(只提供给通过 TAG S 服务评级的卡,因为需要三位数分数)。6466 TAG 并没有明说每张卡都打了分,也没有明说标准报告会隐去分数;这两点都是我对这些句子的理解。
数量报告位于 my.taggrading.com/pop-report,已保存的 taggrading.com 页面上有指向宝可梦分类的链接;没有抓取。67
ACE
三种标签。 ACE 列出“Standard”“Colour Match”和“Ace”三种标签,并说“Ace Labels are hand drawn exquisite addons for cards, which enhance the overall appearance of a collectible.”(Ace 标签是为卡牌手绘的精美附加装饰,能提升收藏品的整体观感。)它的证书页面按标签种类报告数量。4012
证书记录里有什么。 ACE 的记录页面列出“Label”“Name”“Release Year”“Set”“Number”“Language”和“Variant”(宣传卡则为“Additional Information”),带文字的等级(一张是“MINT 9”,另一张是“GEM MINT 10”),以及 Surface、Centering、Edges 和 Corners 四项子分数。1213
ACE 的编号很短。 读到的两条记录分别是六位和五位,后者前面补了零:#242548 和 #02289。本文读到的 ACE 页面没有一个给出格式。121343
查询编号。 ACE 的网站提供“Lookup an Ace Grading graded collectible by certification number.”(按证书编号查询 Ace Grading 评级过的收藏品。)记录地址是 https://acegrading.com/cert/<number>,两条记录都正常返回。调研笔记记录,索引页面 /cert 对自动化请求返回了 HTTP 403 和 Cloudflare 机器人检查,/pop 也是如此,两者都没有访问到。401249
核验扫描到的标签。 “Please check the URL in your browser,”(请检查浏览器中的网址),后面是地址“https://acegrading.com,”,“When scanning our authentication labels.”(在扫描我们的认证标签时。)读到的页面没有描述其他防伪特征。28
ACE 的修饰标记在它的评级量表里,该标题下列了两组:评级壳中的卡可以带的 MC 和 OC,以及用于退回裸卡的 A、C 和 QA(Altered、Counterfeit、Questionable Authenticity)。42 偏心:“The Off-Center modifier is given to a card where the grade for centering is 2 grades or more below the overall card grade. The Off-Center qualifier means that the overall grade isn’t affected as much, instead appending OC to the grade.”(当居中度等级比卡的总等级低 2 级或以上时,会给出 Off-Center 修饰。Off-Center 修饰标记意味着总等级受到的影响较小,而是在等级后加上 OC。)42 切割偏差:“Sometimes a miscut card can not fit in the Ace slab,”(有时切割偏差的卡放不进 Ace 评级壳),当一张卡“cannot be encapsulated due to a miscut,”(因切割偏差无法封装)时,“it will be sent back raw”(会以裸卡退回);页面没有说放得进去的切割偏差卡如何标注。42 ACE 另外三个修饰标记 Altered、Counterfeit 和 Questionable Authenticity,结尾都是同一句:“The card will not be encapsulated and will be returned raw.”(该卡不会被封装,会以裸卡退回。)42 所以按我的理解,ACE 的量表没有给改动过的卡留进入评级壳的路,而 PSA 的量表给五个无分数代码留了这条路。4216 它的量表列出从 10 到 1 的整数等级,没有半分。42
3. 六家并排对比,以及什么时候改了什么
| 标签 | 编号在哪里 | 编号格式,用评级公司自己的话 | 按网址查询 | 2026 年 10 月 5 日的机器人检查,据调研笔记 | |
|---|---|---|---|---|---|
| PSA | 纸质插入式标签:红色(物品)或蓝色(仅签名,自 2024 年 6 月 19 日起) | “on the PSA label”(在 PSA 标签上);未说明哪一面;二维码在背面(2017 年标签) | 读到的页面没有给出卡牌标签的格式(PSA/DNA 的签名贴纸带有“a unique, six-digit, alphanumeric certification number”(唯一的六位字母数字证书编号));API 的示例是 00000000;一个已保存的 CardFacts 页面链接了 201 个编号,全部是八位数字 |
psacard.com/cert/<n>,即 PSA 自己的 CardFacts 页面链接的形式 |
Cloudflare 质询(保存的数量报告文件是登录页面) |
| BGS | 横跨顶部的纸质标签;子分数在正面;四项子分数都是 10 的 Pristine 10 用黑标(自 2014 年 11 月 28 日起) | 标签上的“a bar coded serial number”(一个带条形码的序列号);未说明哪一面 | 读到的页面上没有 | 无;一个可选 BGS、BVG 或 BCCG 的表单 | 网站下线 |
| CGC | 纸质标签;Pristine 10 用金标(自 2023 年起);绿色是 Qualified 标签 | 2020 年的标签在标签背面;如今的页面提到编号但未说明位置;二维码在背面 | 读到的页面上没有;索引中的例子是十位数字 | cgccards.com/certlookup/<n>/ |
Cloudflare 质询 |
| SGC | 黑色、绿色或白色 | 读到的 SGC 页面未说明 | “7 digits”(7 位数字)(黑标);“11 characters (XXXXXXX-XXX)”(11 个字符)(绿标、白标) | 无;一个带 reCAPTCHA 的表单 | 无(只有表单的组件) |
| TAG | 没有纸:外壳内部的文字和二维码 | “left of the QR code”(二维码左侧) | “typically 1 Letter followed by 7 Numbers”(通常是 1 个字母后跟 7 个数字);“8 digit”(8 位);“a mix of numbers and letters”(数字与字母混合) | my.taggrading.com/card/<n> |
无 |
| ACE | Standard、Colour Match 或 Ace | 读到的 ACE 页面未说明 | 读到的页面上没有;它自己的记录上是 5 位和 6 位 | acegrading.com/cert/<n> |
查询索引和数量报告有;两个记录页面正常返回 |
来源:第 2 节引用的页面。222433555544726931292359253648106411416540121349
各家评级公司证书编号的形状,逐字符排列,对照我应用的读取器所寻找的 7 到 10 位数字串,以及读取器对每个编号返回了什么。1444
标签改动,以评级公司自己的日期为准
第 2 节的表格列出了 PSA 有日期的六次改动。加上 Beckett 和 CGC 的改动,就是下面的时间线;评级公司自己页面上没有日期的改动不列入,而 2008 年 2 月 12 日之前 PSA 没有任何日期。17181920212293623
以评级公司自己的公告注明日期的标签改动;Beckett 的改动依据其帖子的存档副本。44
为什么标签日期需要评级公司自己的说法。 本文最初的计划把 PSA 的 LightHouse 标签当作 2023 年的改动。PSA 自己的文章把它定在 2017 年 6 月 14 日,PSA 的安全页面也说“In 2017, PSA enhanced the security features found on the label used inside the PSA holder.”(2017 年,PSA 增强了 PSA 封装壳内所用标签的防伪特征。)1924 我在 psacard.com 上没有找到日期为 2023 年的 PSA 标签改版;PSA 2024 年的改动是新封装壳(2024 年 5 月 14 日)和仅签名物品的蓝标(6 月 5 日公布,2024 年 6 月 19 日生效)。2122 2023 年的改版属于 CGC,于 2023 年 6 月 20 日公布、7 月实施。23 有些收藏者指南给 PSA 的“label styles”(标签样式)编号,或给出别的日期;我只把它们当作线索。46
居中度一文依据的十个评级公司页面没有变化
居中度一文依据的是 2026 年 10 月 4 日保存的评级公司页面。我把其中十个与 10 月 5 日保存的副本逐行比较:PSA 的评级标准(普通页面)和术语表、CGC 的评级量表和“other grading topics”常见问题、TAG 的评分细则、量表和 DIG 页面、ACE 的评级量表、SGC 渲染后的量表以及 Beckett 的状态页,十对全部“unchanged”(未变化)。6815 有一部分没有复查:PSA 各等级的文字在一个脚本包里,没有重新渲染,而普通页面只显示 PSA 10 那一张幻灯片。68 居中度一文保存的其他页面也没有复查,其中包括 PSA 的居中度指南、CGC 的常见问题和 TAG 的术语表,本文一个都没有引用;两篇文章都读的 Beckett 常见问题和量表是存档快照,已由其日期固定。68268
关于居中度一文的两个发现
这些是本文的发现;居中度一文本身没有改动。69
Beckett 的停机早于 10 月 2 日的通知就开始了。 居中度一文从那份通知算起 Beckett 的停机(“Beckett’s site has been offline since a notice dated October 2, 2026”,Beckett 的网站自 2026 年 10 月 2 日的通知以来一直下线)。69 Wayback Machine 在 2026 年 9 月 19 日对 Beckett 维护页面的快照已经写着:“Beckett’s digital platforms, including Beckett.com and the Beckett mobile app, remain temporarily offline while we complete infrastructure enhancements.”(Beckett 的数字平台,包括 Beckett.com 和 Beckett 移动应用,在我们完成基础设施升级期间暂时保持下线。)30 它的卡牌查询在 2026 年 8 月 19 日的快照里还能用。31 所以网站是在这两份快照之间的 31 天里某个时间下线的,至少比通知早 13 天,而 10 月 2 日的通知说明的是它所说的“The extended downtime”(停机时间延长)的原因。2915 没有任何 Beckett 页面注明开始日期;这个时间窗口依据的是两份存档快照。3031
TAG 的系统在 1,000 分量表上打分;按我的理解,每张卡都在这个量表上打分,而卡主只有在一个报告档次才能看到完整分数。 居中度一文说 TAG“scores out of 1,000 to answer “how strong of a 10 is this””(以 1,000 分为满分打分,以回答“这是多强的一个 10 分”)。69 TAG 自己的页面也是这样描述该系统的:它“scores on a precise 1000 point scale & translates into an industry standard 1-10 Grade,”(在精确的 1000 分量表上打分,并换算为行业标准的 1 到 10 等级),生成“overall scores for the card on a 1-10 and 1000-point TAG Score scale.”(卡牌在 1 到 10 和 1000 分 TAG Score 量表上的总分)。6437 卡主得到什么与报告档次挂钩(这里不引用价格):“Standard DIGs focus on the core defects that impacted the grade,”(标准 DIG 关注影响等级的核心缺陷),而“DIG Plus Reports breakdown the card into further detail with precise 3 digit scoring”(DIG Plus 报告以精确的三位数评分对卡牌做更细致的拆解);“Slabs graded with DIG Report Plus receive a precise 1000 pt TAG Score”(以 DIG Report Plus 评级的评级壳会得到精确的 1000 分 TAG Score);排行榜名次则“is only available to cards which have been graded via the TAG S service as a 3 digit score is needed”(只提供给通过 TAG S 服务评级的卡,因为需要三位数分数)。6466 所以按我的理解,每张 TAG 卡都在 1,000 分量表上打分,而完整分数随 Plus 报告显示;TAG 没有明说标准报告会略去分数。这是对居中度一文的限定,不是矛盾:它引用的 TAG 页面,即评分细则、量表和 DIG 页面,都在这十个之中,并且没有变化。6869
4. 手里拿着评级壳时怎么读、怎么核验
下面把评级公司自己的说法,按收藏者拿着一个评级壳时会遇到的顺序排列。顺序是我定的;每一步的内容都出自评级公司。
1. 找到评级公司和证书编号,到这家评级公司查询编号。 这是每家评级公司都提供、也是 PSA 保证所依赖的一步:这张卡在索赔人购买时必须有“an active certification number on the cert lookup feature of the PSA website at the time it was purchased”(在购买时于 PSA 网站的证书查询功能上的有效证书编号)。1 在标签上找编号:PSA 的术语表只说“It can be found on the PSA label,”(可以在 PSA 标签上找到),Beckett 的常见问题称之为“a bar coded serial number,”(一个带条形码的序列号),CGC 现在的页面在条形码旁提到编号但没说是哪一面,CGC 2020 年的标签把它印在背面。TAG 把它放在外壳内的“left of the QR code”(二维码左侧),SGC 的查询要求黑标输入全部七位数字,绿标和白标输入包括连字符在内的全部十一个字符。32625361110 如果评级公司在记录上显示图片,请把图片和手中的卡比对:PSA 称其带图片的记录“extremely useful for collectors looking to verify the details of an item, including its cert number, before making a purchase,”(对想在购买前核实物品细节、包括证书编号的收藏者极为有用),SGC 的应用在核验时也提供“high-resolution images”(高分辨率图片)。3562
2. 读记录上写的内容,不只读标签。 已撤销的 TAG 编号会显示“This TAG Certification number is no longer active.”(此 TAG 证书编号已失效。)39 CGC 说它的证书查询把旧版 Gem Mint 9.5 计为 Gem Mint 10。5 查询已下线的 Beckett 说它的“Core certification, grade records, and historical population databases remain intact and uncompromised”(核心认证、等级记录和历史数量数据库完好无损,未遭入侵),并把查询列在恢复的第一阶段。29
3. 读数字旁边的文字。 在 PSA 标签上,OC、ST、PD、OF、MK 或 MC 会改变数字的含义。AUTHENTIC 意味着 PSA“only certifying that the item is genuine,”(只认证该物品是真品),用 PSA 的话说是一张“real but nothing more”(是真的,但仅此而已)的卡,而它可能代表一张改动过的卡,因为 PSA“does not always print the term “Altered” on the label itself”(并不总是在标签上印出“Altered”一词);PSA 针对改动的五个无分数代码仍可能通向 Authentic Altered 封装壳。161 在 CGC 标签上,9.5 需要看文字:GEM MINT(现在是 10 分)还是 MINT+(低于 10 分)。45 在 CGC、SGC 和 TAG,10 分也需要看文字:Pristine 还是 Gem Mint。467 在 Beckett,文字的划分不同:它唯一的 10 分是 Pristine,Gem Mint 是它的 9.5,黑标表示四项子分数都是 10 的 Pristine 10。89 在 ACE,加在等级后的 OC 意味着居中度被评为“2 grades or more below the overall card grade.”(比卡的总等级低 2 级或以上。)42
4. 在评级公司赋予颜色含义的地方,读标签的颜色。 PSA:红色是物品,自 2024 年 6 月 19 日起蓝色仅针对签名(2019 年 1 月 1 日之前 PSA/DNA 的封装也用蓝色)。2220 Beckett:黑色表示四项子分数都是 10。9 CGC:金色是 Pristine 10,绿色是 CGC 不保证的 Qualified 等级。2359 SGC:黑标是七位数字编号,绿标和白标是十一个字符。10
5. 核对评级公司公布的特征,并且只核对这些。 PSA 描述了现行标签上的 LightHouse 标志“with on/off illumination effect,”(带有明暗变化效果)、“Fugitive ink graphic pattern to prevent label washing,”(防止标签被洗的易褪油墨图案)、背面的“PSA logo with UV logo pattern,”(带 UV 标志图案的 PSA 标志),以及通往其查询的二维码;它的封装壳是防篡改的,PSA 将其定义为会留下“some evidence that the holder has been compromised.”(封装壳已被破坏的痕迹)。2435 CGC 列出了“microprinting, UV ink, holographic foil and a unique certification number and barcode,”(微缩印刷、UV 油墨、全息箔以及唯一的证书编号和条形码),以及一个“resists impacts and tampering.”(耐冲击、防篡改)的外壳。25 TAG 的核验是它的 Proof Mark,用它自己的应用扫描:“Locate the Proof Mark on the back of the slab, directly behind the QR code.”(在评级壳背面、二维码正后方找到 Proof Mark。)11 ACE 的核验是扫描标签后打开的地址,应当是“https://acegrading.com”。28 Beckett 存档的常见问题只给了一句话,没有清单,本文读到的 SGC 页面没有描述任何特征,所以拿着这两家评级壳的收藏者,从评级公司那里能用的只有查询,几乎没有别的。2627 本文只描述评级公司公布的内容,不涉及标签或外壳如何可能被伪造。
6. 了解标签日期能告诉您什么。 等级数字位于等级文字下方的 PSA 标签,是 2008 年 2 月 12 日或之后的;带易褪油墨的 LightHouse 标签是 2017 年 6 月 14 日之后的;仅签名的蓝标是 2024 年 6 月 19 日之后的,不过单凭蓝色无法断定日期:“Prior to January 1, 2019, PSA/DNA used blue labels”(2019 年 1 月 1 日之前,PSA/DNA 使用蓝标),签名认证也用蓝色,所以一张蓝标可能是 2019 年之前的,也可能是 2024 年 6 月 19 日之后的。17192220 CGC Cards 标签出自 2023 年的改动之后,带子分数的 CGC Trading Cards 标签则在那之前。2336 这是我对评级公司注明日期的公告的理解;本文读到的页面没有一个是鉴定标签年代的指南。
7. 把数量报告当作评级壳的计数来读。 PSA 的报告统计的是“every single card we have ever graded and encapsulated,”(我们评级并封装过的每一张卡),而不是“ALL CARDS IN EXISTENCE,”(现存的所有卡),也不包括“for evidence of alteration, restoration or questionable authenticity”(因有改动、修复迹象或真伪存疑)而被拒的卡;CGC 说它的报告“not an indicator of value or rarity”(并不代表价值或稀有度);SGC 提醒“inconsistencies may be present.”(可能存在不一致之处。)566063 本文的任何内容都不是投资建议:它描述的是评级公司印了什么、公布了什么,不对任何评级壳的价值做任何主张。
8. 查询页面拒绝自动化请求,说明页面在正常工作。 这些查询中有几个会在脚本面前设一道检查。调研笔记记录,PSA 的证书页面和数量报告、CGC 的查询,以及 ACE 的查询索引和数量报告,对我的请求都返回了 HTTP 403 和 Cloudflare 质询;为 PSA 数量报告保存的那一个文件是 PSA 的登录页面,所以那份报告也在登录之后;SGC 的表单带有 reCAPTCHA。我的脚本到此为止,这些页面都没有访问到。在手机浏览器里打开这些页面的收藏者,才是它们服务的对象;届时每个页面是否会显示记录,本文没有核实。47484910
5. 手艺,写成带数字的规则
以下是上文各节所支持的规则,每条都注明出处。它们陈述的是评级公司公布的内容和实测结果,不是评级建议。
| 要素 | 规则 | 来源 |
|---|---|---|
| 钥匙 | 证书编号是标签的钥匙。PSA 对其意见负责,“as reflected on each PSA label”(以每张 PSA 标签上所反映的为准);按我的理解,按编号查询是买家确认这一意见是否依然有效的方式。PSA 的保证涵盖卡牌的等级和真伪,要求购买时有“an active certification number”(一个有效的证书编号),并把遭篡改或伪造的标签排除在外,“regardless of certification status”(无论其认证状态如何) | PSA 保证;我的理解 |
| 核验 | 在依赖标签之前,先按编号查询评级壳;本文读到的六家评级公司都公开了查询;PSA、CGC、TAG 和 ACE 还加了二维码或扫描核验,TAG 在二维码后面还有 Proof Mark | 六家评级公司的页面 |
| 证书编号的形状 | SGC:黑标 7 位数字,绿标和白标 11 个字符(XXXXXXX-XXX)。TAG:“typically 1 Letter followed by 7 Numbers.”(通常是 1 个字母后跟 7 个数字。)ACE:它自己的记录上是 5 位和 6 位数字。本文读到的 PSA 页面没有给出卡牌标签的格式(它的常见问题给 PSA/DNA 签名贴纸的是“a unique, six-digit, alphanumeric certification number”(唯一的六位字母数字证书编号)),Beckett 的页面也没有;PSA 的 API 示例是 8 个字符,一个已保存的 PSA CardFacts 页面链接了 201 个编号,全部 8 位数字(这是计数,不是公布的格式);见到的 CGC 编号是 10 位数字 | SGC、TAG、ACE、PSA 常见问题、API 和 CardFacts 链接、CGC(搜索索引) |
| 10 分不是一个等级 | CGC 的 Pristine 10 与 Gem Mint 10 分开,Pristine 用金标(自 2023 年起);SGC 的 10 PRI 与 10 GM 分开;TAG 的 Pristine 分数为 990 到 1000,与 950 到 989 的 Gem Mint 分开。Beckett 唯一的 10 分是 Pristine(它的 Gem Mint 是 9.5),它的黑标表示四项子分数都是 10 的 Pristine 10(自 2014 年 11 月 28 日起) | CGC、SGC、TAG、Beckett(存档) |
| 在 CGC,9.5 不是一个等级 | 旧版 Gem Mint 9.5 等于如今的 Gem Mint 10;如今的 Mint+ 9.5 位于其下 | CGC 量表、CGC 帮助中心 |
| 半分 | PSA 的半分位于“between PSA 2 and PSA 9”(PSA 2 到 PSA 9 之间),另有 FR 1.5,所以没有 9.5;TAG 跳过“between 9 and 10”(9 和 10 之间);ACE 只列整数等级;Beckett 有 9.5 | PSA、TAG、ACE、Beckett(存档) |
| 数字旁边的字母 | PSA:OC、ST、PD、OF、MK、MC,以及没有数字的 AUTHENTIC 或 ALTERED AUTHENTIC。CGC:AU、AA、ART,以及等级“is NOT guaranteed”(不受保证)的绿标。ACE:居中度“2 grades or more below the overall card grade,”(比卡的总等级低 2 级或以上)时在等级后加 OC,并把 MC 列为修饰标记 | PSA、CGC、ACE |
| PSA 的 Authentic | “Real but nothing more,”(是真的,但仅此而已),而且可能是改动过的卡:出于技术原因,PSA“does not always print the term “Altered” on the label itself”(并不总是在标签上印出“Altered”一词)。PSA 九个无分数代码中有五个仍可封装为 Authentic Altered,两个可封装为 Authentic,都由评级员酌情决定,且送评人须在单上提出要求;N4 永远不能,N9 除非判定被推翻否则不能 | PSA 保证、标准和常见问题 |
| PSA 的颜色 | 红色:物品。蓝色,自 2024 年 6 月 19 日起:仅签名;2019 年 1 月 1 日之前 PSA/DNA 的封装也用蓝色 | PSA,2019 年和 2024 年 |
| PSA 有日期的改动 | 2008 年 2 月 12 日(等级位于等级文字下方)、2013 年 11 月 12 日(插入式标签背面的全息图)、2017 年 6 月 14 日(LightHouse、易褪油墨、UV、二维码)、2019 年 1 月 1 日(所有封装都用红色)、2024 年 5 月 14 日(新封装壳,从体育卡开始)、2024 年 6 月 19 日(仅签名用蓝色) | PSA 文章 |
| CGC 有日期的改动 | 2020 年 7 月 13 日(CGC Trading Cards 标签,如有要求提供子分数);2023 年 6 月 20 日(7 月实施的 CGC Cards 标签、金色 Pristine 10、不再提供子分数、Gem Mint 9.5 现为 10) | CGC 文章 |
| 公布的防伪 | PSA:LightHouse 标志、正反面易褪油墨、UV 标志图案、二维码、防篡改封装壳。CGC:微缩印刷、UV 油墨、全息箔、证书编号和条形码、超声波焊接。TAG:Proof Mark。Beckett:一句话。SGC:读到的页面上没有。ACE:只有地址核对 | 各评级公司的页面 |
| 数量报告 | 统计的是评级壳,不是卡:PSA 的不是“ALL CARDS IN EXISTENCE”(现存的所有卡),并且不含被拒的卡;CGC 的“not an indicator of value or rarity”(并不代表价值或稀有度);SGC 的可能有“inconsistencies”(不一致之处) | PSA、CGC、SGC |
| PSA 的系列名称 | 它自己的叫法:Base Set 是“1999 Pokemon Game”,日文系列名中带“Japanese”,所以标签上的系列文字不是印刷的系列名称 | PSA CardFacts 和价格指南;我的理解 |
| 应用,实测 | 在按公开格式构造的十六张合成标签中(其中两张的版式任何评级公司页面都没有展示过),我应用的读取器完整读对 3 张,6 张等级(或无等级)正确但丢掉了改变其含义的文字,7 张读错:1 张丢了等级,2 个证书编号被截短,4 个评级壳漏认 | 读取器的 Python 副本 |
此表的来源:PSA 的保证、标准、常见问题、术语表和文章;116353171819202122 PSA 的安全页面、API、CardFacts 链接和数量文章;24555456 PSA 的系列页面;505152 Beckett 的存档页面;2698 CGC;45233659256048 SGC;1066327 TAG;11741 ACE;12132842 以及实测。1415
这些规则中有两条承担了大部分分量。钥匙规则解释了为什么无论用眼睛还是用相机读,标签都只是一个指引:PSA 对其意见负责,“as reflected on each PSA label,”(以每张 PSA 标签上所反映的为准),而按我的理解,按编号查询是买家确认这一意见是否依然有效的方式。1 字母规则则解释了为什么等级从来不只是一个数字:PSA 标签上同样的“9”,有没有 OC 是两种不同的陈述;CGC 标签上同样的“9.5”,取决于旁边的文字,是两个不同的等级。164
6. Apple 的路子:Kiradex 的标签读取器目前在做什么
Kiradex 是我的集卡应用,它的扫描器用相机读取评级壳的标签,把评级公司、等级和证书编号存到收藏中这张卡的副本上。下面是我在 2026 年 10 月 5 日读到的工作树中代码在做什么,然后是对照评级公司公布的格式,它对在哪里、错在哪里。代码是读的,没有在手机或 Simulator 上运行;下面的实测是把读取器的 Python 副本跑在键入的文本上,这就是本节所能主张的诚实上限。3214
读取文字
扫描器把每一帧相机画面交给 Vision。一个 VNRecognizeTextRequest 以 .accurate 识别级别运行,语言为英语(日文图鉴为日语加英语),语言校正关闭;注释说明了原因:“Card names are not dictionary words, and a “corrected” collector number is a wrong one.”(卡名不是词典里的词,一个被“校正”过的收藏编号就是错的编号。)它找到的每一行都连同文字、高度和位置一起返回。70 之后的一切都是对这些行的字符串处理。
找出评级公司、编号和等级
六家评级公司。 应用的 Grader 类型有六个 case,psa, bgs, cgc, sgc, tag, ace,显示为“PSA”“BGS”“CGC”“SGC”“TAG”和“ACE”。32
按名称识别评级公司。 每家评级公司都有若干“marks”(标识),按完整单词查找:画面文字在任何非字母、非数字、非句点的字符处切开,每一段都经过折叠,去掉大小写、重音和句点。标识是 psa;beckett 或 bgs;cgc;sgc;taggrading 或 tag;acegrading 或 ace。由于卡牌本身印有“TAG TEAM”和“ACE SPEC”,TAG 和 ACE 带有一个针对整个评级公司设置的标志 isAlsoCardText,其注释说“Such a name only means a grader beside a certificate number.”(这样的名称只有在证书编号旁边时才表示评级公司。)在代码里,条件是画面中任何地方有一个证书编号(certNumber != nil),并且适用于这家评级公司的所有标识,包括 acegrading 和 taggrading。按这个顺序第一个通过的评级公司胜出。3253
按长度识别证书编号。 “The certificate: the longest run of 7 to 10 digits,”(证书编号:最长的 7 到 10 位数字串),由模式 (?:^|\D)(\d{7,10})(?!\d) 查找。32
按文字识别等级。 “The grade: a number from 1 to 10, on or right beside a line with a grade word (“GEM MT 10”); failing that, the tallest such number.”(等级:位于带等级用词的行上或紧挨着该行的一个 1 到 10 的数字(“GEM MT 10”);找不到时,取这类数字中字最高的那个。)等级用词是 gem, mint, mt, nm, ex, vg, good, fair, poor, pristine;SGC 的 gm 和 pri 不在其中。数字前面不能是字母、数字、下划线、句点、斜杠或 #,后面不能是字母、数字、下划线、句点或斜杠,这就是为什么“9OC”得不出等级。3214
多次观察,合并结果。 一张标签要跨多帧读取:“A label is small print, and often read a look late,”(标签字小,常常要晚一次才读到),所以一张已确定读出的卡,在快速模式把它当作裸卡之前,会再多看 looksForALabel = 2 次。后面的读取补上前面漏掉的内容,保留较晚的等级和较长的证书编号,并且只在评级公司相同时才这样做。7172
标签有助于找到卡。 PSA 式的“#4”算作不带系列总数的编号(“Numbers given without a set size: a grading label’s “#4””,没有系列总数的编号:评级标签上的“#4”),印出的最近年份按年份给系列加分。只有文字中包含图鉴的英文系列名(日文图鉴则为日文名)时,系列名称才计分。53
它保存什么,提供什么
三个字段。 一份副本保存 graderRaw(裸卡为空)、grade(“1 to 10 in halves; 0 when there is none”,1 到 10,以 0.5 为步长;没有时为 0)和 certNumber,CloudKit schema 带有同样三个:CD_graderRaw、CD_grade、CD_certNumber。3373 标签上的其他内容一概不保存:没有修饰标记、没有标注、没有子分数、没有标签种类或颜色、没有 Pristine 还是 Gem、没有日期。33
编辑。 副本编辑器的等级选择器对每家评级公司都提供“Grades as labels print them: 10 down to 1, in halves,”(按标签印法的等级:从 10 到 1,以 0.5 为步长),外加“Not noted”(未记录),证书编号字段打开的是数字键盘。34
每家评级公司一个查询链接,或者没有。 verificationURL(cert:) 为 PSA 返回 https://www.psacard.com/cert/<cert>,为 CGC 返回 https://www.cgccards.com/certlookup/<cert>/,对 BGS、SGC、TAG 和 ACE 什么都不返回;它的注释说,只有“if it has a public page that takes the number in its address”(如果它有一个在地址中接受编号的公开页面)时,评级公司才会得到链接。编辑器只在有链接时显示带评级公司名称的“Look Up at”按钮。3234
重复。 如果一份副本的评级公司和证书编号已属于同一张卡的另一份副本,就会被拒绝,并弹出一个由 "\(grader.name) \(details.certNumber) is already registered." 构造的提示条。这个检查只看一张卡的副本,不看整个收藏。3374
扫描面板显示什么。 显示等级和编号,比如 UI 测试里的“PSA 10”和“49392218”,评级副本不显示居中度那一行,因为“a case hides the card’s edges.”(外壳挡住了卡的边缘。)7576
已证明的内容。 针对键入文本的单元测试覆盖了 PSA、Beckett 和 CGC 标签、裸卡,以及“TAG TEAM”和“ACE SPEC”防护;一个 UI 测试扫描一张画出来的固定样例标签,上面印着“2026 KIRA BASE”“PSA”“GEM MT”“10”和“49392218”。58777876 至于在手机上,路线图说得很直白:“Focus distance, zoom, speed, glare on foil, and slabs behind plastic are all unproven; the Simulator has no camera.”(对焦距离、变焦、速度、闪卡反光以及隔着塑料的评级壳都未经证明;Simulator 没有相机。)79
哪里出错,实测
运行了什么。 一个 Python 脚本逐行照搬 SlabLabel.init?(reading:) 和 Grader.verificationURL(cert:)。在做任何事之前,它先用应用自己的测试检验自己。这些测试在两个测试文件中共读取标签八次,其中“TAG TEAM”这一读取在两个文件里都有,所以脚本运行七个不同的读取:PSA、Beckett 和 CGC 标签,裸卡,“TAG TEAM”,“ACE SPEC”,以及一张带七位编号的 ACE 标签(对于后者,应用的测试只断言评级公司是 ACE,脚本也只比较这一点)。七个全部通过。这些文件中另外两个期望不在此次检验之内:PSA 测试断言的 PSA 查询地址,以及一个比较经扫描器读出的完整标签的测试。接着脚本按公开格式构造十六张合成标签,其中两张的版式任何评级公司页面都没有展示过(PSA 的 OC 与数字分开写,而术语表是连写的;以及下面第三张 ACE 标签):评级公司名称、“CARD NAME”、“SET NAME”、按该评级公司说法写的等级(PSA 的 GEM MT 10,照其 CardFacts 页面的写法;术语表的“Mint 9oc”;CGC、TAG 和 ACE 的等级名称;SGC 的 10 GM,以及它的 8 分,由于该等级名称中没有字母,就用旁边的品质词 NM/MT 8),以及该评级公司形状的证书编号,用的是 PSA 的 API 示例、十位的 CGC 例子、SGC 的两种格式、两种 TAG 形状(其中一个是自编的字母数字混合,因为 TAG 只公布了“a mix of numbers and letters”(数字与字母混合),没有固定顺序),以及 ACE 公布的两条记录。第三张 ACE 标签另起一行加上网站名 ACEGRADING.COM;ACE 的认证页面把这个地址列为扫描标签后应打开的地址,但没有说标签上印着它,所以这种版式是一个假设。141550628 有三个局限:这是 Python 副本,不是 Swift;输入是键入的文本,相当于相机把每个字符都读得完美无缺,而不是相机的读取结果;各评级公司如何排布标签没有公布,所以各行的顺序只是合理的推测,不是实测。14 脚本还有一个单独的部分,运行简报所提规则(第 7 节)的草案,与对现有读取器的实测分开。它的每一次运行,除 10 月 15 日的几次外都在 2026 年 10 月 5 日,并逐一列在注释中,现有读取器对这十六张标签返回的结果都相同。14
| 合成标签(格式来源) | 应用读出 | 判定 |
|---|---|---|
PSA,GEM MT 10,00000000(PSA 的 API 示例) |
PSA,10,00000000 |
正确 |
PSA,MINT 9OC(术语表的“Mint 9oc”) |
PSA,无等级,00000000 |
等级丢失;OC 丢失 |
PSA,MINT 9 OC |
PSA,9,00000000 |
OC 丢失 |
PSA,AUTHENTIC |
PSA,无等级,00000000 |
AUTHENTIC 被存为“无等级” |
CGC,PRISTINE 10,十位数字 |
CGC,10,3732635008 |
Pristine 丢失:与 Gem Mint 10 存得一样 |
CGC,GEM MINT 10,十位数字 |
CGC,10,3732635008 |
正确 |
CGC,GEM MINT 9.5(旧版,现为 10) |
CGC,9.5 | 与现行 Mint+ 9.5 存得一样 |
CGC,MINT+ 9.5(现行) |
CGC,9.5 | 与旧版 Gem Mint 9.5 存得一样 |
CGC,AUTHENTIC ALTERED |
CGC,无等级 | 标注被存为“无等级” |
SGC 黑标,10 GM,1234567 |
SGC,10,1234567 |
正确 |
SGC 绿标或白标,NM/MT 8,1234567-001 |
SGC,8,1234567 |
证书编号被截短 |
TAG,A1234567 |
TAG,10,1234567 |
证书编号的字母被丢掉 |
TAG,混合代码,K4X93B27 |
无 | 漏认评级壳:没有 7 到 10 位数字串,所以 TAG 被当成卡面文字 |
ACE,MINT 9,242548 |
无 | 漏认评级壳:没有 7 到 10 位数字串,所以无论哪个标识,ACE 都被当成卡面文字 |
ACE,GEM MINT 10,02289 |
无 | 漏认评级壳,原因相同 |
ACE,MINT 9,242548,另起一行 ACEGRADING.COM(假设的版式) |
无 | 漏认评级壳,原因相同;地址不改变结果 |
来源:measure_slab_parser.out.txt,最后一次重新运行为 2026 年 10 月 15 日。14
按公开格式构造、其中两张为假设版式的十六张合成标签,跑过应用读取器的 Python 副本:完整 3 张,丢失改变含义的文字 6 张,错误 7 张。141544
用同一个分母计数。 十六张中,3 张(18.75%)完整读出:评级公司、证书编号、等级以及每一个改变等级含义的词。9 张(56.25%)的评级公司、证书编号和等级(对两个标注而言,则是没有等级)是对的,而这九张中有 6 张丢了改变数字含义的词:OC、AUTHENTIC、PRISTINE、旧版 9.5 上的 GEM MINT、现行 9.5 上的 MINT+,以及 AUTHENTIC ALTERED。7 张(43.75%)是错的:1 张丢了等级,2 个证书编号被截短,4 个评级壳(25%)根本没被认出是评级壳。15 脚本自己的汇总行用另一种方式统计同一次运行,结果一致:“9 of 16 read grader, cert and grade number as the label states; 7 did not; 7 cases lose a qualifier or designation the label prints,”(16 张中有 9 张按标签所示读出评级公司、证书编号和等级数字;7 张没有;7 例丢失了标签印出的修饰标记或标注),第七例是连写的“9OC”,它同时还丢了等级。1415
- PSA,4 张: 1 张完整;2 张等级正确但丢了一个词(分开写的 OC、AUTHENTIC);1 张丢了等级(OC 连写,即术语表的写法)。每个 PSA 证书编号都读对了。PSA 印 OC 时是连写还是分开写,读到的页面没有公布,所以两种写法都跑了。14
- Beckett: 没有运行,因为本文读到的 Beckett 页面没有一个给出证书编号格式;应用自己的 Beckett 测试(十位数字、子分数在同一行、9.5 是字最高的数字)在副本中通过。1458
- CGC,5 张: 1 张完整(Gem Mint 10);4 张数字正确但丢了赋予它含义的词(Pristine、旧版 Gem Mint 9.5、Mint+ 9.5、Authentic Altered)。每个 CGC 证书编号都读对了。14
- SGC,2 张: 黑标完整;绿标或白标的证书编号被截成前七位。14
- TAG,2 张: 字母加七位数字的代码被截成数字;混合代码没被认出是评级壳。14
- ACE,3 张: 没有一张被认出是评级壳。14
第 3 节的证书编号形状图逐字符画出了同样的失败:阴影带,即 7 到 10 位数字串,是读取器唯一会保留的形状。1444
被截短的证书编号比缺失的更糟。 SGC 和 TAG 的失败都返回了一个编号,而且是错的编号。14
- SGC 绿标和白标:
1234567-001被读成1234567。SGC 说要“enter all 11 characters”(输入全部 11 个字符)。应用会存下七个,而由于它的重复检查比较的是存储的编号,按我的理解,同一张卡的两个不同绿标评级壳如果共用七位前缀,就会被当成一个外壳而遭拒。1033 - TAG:
A1234567被读成1234567。TAG 说格式“typically 1 Letter followed by 7 Numbers,”(通常是 1 个字母后跟 7 个数字),所以拿存储的编号去查询,查的并不是这张卡的编号。11 - 副本编辑器显示错误的编号,没有任何警告, 而上方的页脚告诉收藏者,编号“is printed on the case’s label.”(印在外壳的标签上。)34
每一个带五位或六位编号的 ACE 评级壳,就像 ACE 自己的两条记录那样,都被读成裸卡,原因在于编号的长度。 ACE 自己页面上的编号是五位和六位;读取器只保留 7 到 10 位数字串。画面中任何地方都没有这样的数字串,certNumber 就是 nil,而那道防止“ACE SPEC”卡被读成 ACE 评级壳、针对整个评级公司设置的防护,无论哪个标识都会把 ACE 拒掉。Python 副本中三张 ACE 标签遇到的正是这个,即使地址没有被折叠也一样:在哪个标识匹配之前,防护就已经拒绝了 ACE。12133214 折叠是第二道、较小的障碍。它去掉句点,于是“ACEGRADING.COM”变成 acegradingcom,这不是完整单词 acegrading;这只在一种标签上才有影响:印了地址、没有单独的“ACE”、且编号是读取器能接受的,而本文读到的 ACE 页面根本没有说它的标签印着地址。325328 在快速模式下,再看两次之后,这样的卡会被登记为裸卡,品相是扫描器设定为裸卡记录的那种,还可能带上一个隔着外壳测得的居中度读数。717475
“1999 POKEMON GAME”不对应图鉴中的任何系列。 按我对其 CardFacts 标题的理解,PSA 的标签把 Base Set 叫作“Pokemon Game”,而应用只有在图鉴的英文系列名出现在文字中时才按名称给系列加分,所以 PSA 标签给匹配器的只有年份和不带系列总数的编号。5053 应用自己的测试记录了结果:Base Set 4 号的 PSA 标签并不确定,“The name, the number and the year together put Base Set first.”(卡名、编号和年份放在一起,让 Base Set 排在第一。)58 按我的理解,这对一张卡名和编号属于 1999 年某一个系列的 1999 年卡管用,但无法区分同一年里卡名和编号相同的两个版次,而且也没有一份从 PSA 系列名到图鉴系列的对照表可以兜底;要建这样的对照表,就得读 PSA 的系列列表,而它读不到,因为它的数量报告没有访问到(调研笔记中是机器人检查,已保存的文件中是登录页面)。5347
一个编号,两种标签。 存储模型是评级公司、等级和证书编号,所以下面这些印出的等级在其中会撞在一起。汇总行是评级公司名称加数字,没有数字时只有名称,所以每一对的两者读起来都一样,例如 CGC 10、CGC 9.5 或 PSA 9。3314
- CGC Pristine 10 和 CGC Gem Mint 10,尽管 CGC 给前者专门的金标。23
- CGC 的旧版 Gem Mint 9.5 和现行 Mint+ 9.5:一个现在是 10 分,另一个低于 10 分。4
- SGC 10 PRI 和 SGC 10 GM。6
- TAG Pristine 10(990 到 1000)和 TAG Gem Mint 10(950 到 989)。7
- 四项子分数都是 10 的 Beckett Pristine 10,即黑标,和不是黑标的 Beckett Pristine 10。9
- PSA MINT 9 和 PSA MINT 9 OC,按 PSA 的规则是两种不同的陈述。16
- PSA AUTHENTIC 和一份没有记录等级的 PSA 副本;同样,CGC AUTHENTIC ALTERED 和一份没有记录等级的 CGC 副本。每一对都存储评级公司和等级 0,汇总只有评级公司名称。1643314
选择器提供了评级公司并不给的等级。 对照每家评级公司自己的量表,按我的理解:PSA 没有 9.5,它的半分位于“between PSA 2 and PSA 9”(PSA 2 到 PSA 9 之间);ACE 只列整数等级;CGC、SGC 和 TAG 各有两个 10 分,选择器无法区分;TAG 没有 9.5(“Half points are included on every grade level except for between 9 and 10”,除 9 和 10 之间外,每个等级都有半分);Beckett 的 9.5 是 Gem Mint,它唯一的 10 分是 Pristine,而黑标是标签,不是等级。1642467834
链接,逐家来看。
- PSA: 应用构造
https://www.psacard.com/cert/<n>,PSA 自己的页面也用这种形式:本文保存的 CardFacts 页面在其成交记录表中链接/cert/<n>231 次,涉及 201 个不同的编号,没有一个链接在后面加/psa。325415 更长的形式https://www.psacard.com/cert/<n>/psa只在未保存的搜索索引结果中见过。调研笔记记录,两种形式对脚本都返回了 Cloudflare 质询,所以哪一种能在手机浏览器中显示记录,没有核实。47 - CGC: 应用的
https://www.cgccards.com/certlookup/<n>/与索引中的形式一致,调研笔记记录它对脚本同样处于质询之后。3248 - TAG:
https://my.taggrading.com/card/<n>是由 TAG 自己的页面构造的;应用没有 TAG 链接。4132 - ACE:
https://acegrading.com/cert/<n>返回了读到的两条记录;应用没有 ACE 链接。1232 - SGC: 一个带 reCAPTCHA 的表单,没有可放编号的地址;应用没有 SGC 链接。10
- Beckett: 一个可选 BGS、BVG 或 BCCG 并填入编号的表单,自 2026 年 9 月 19 日之前就已下线;应用没有 Beckett 链接。3130
代价
未测量。本文没有任何东西在手机上运行过,所以没有每张标签的耗时、没有电量数字,也没有相机准确率数字。应用自己的测试,本文只读未跑。针对应用逻辑实际执行过的只有 Python:读取器的副本和简报规则的草案。其他脚本跑的是已保存的页面和输出,不是应用:算术、链接计数、页面比较和绘图脚本。141554684479
7. 简报:Kiradex 要做什么,必须通过哪些检查
本文写完之后,工作树有了变化。 下面的一切都是针对提交 5a344e3f(2026 年 10 月 5 日)时的读取器写的,凡说“现在”“目前”的句子都指那个构建;最新的提交 fc9d4876(10 月 15 日)中的 SlabLabel.swift 仍然相同。10 月 15 日,Kiradex 工作树里有对读取器的未提交改动,实现了本简报的一部分:按评级公司区分的证书编号形状(TAG 为 [A-Z]\d{7},SGC 为 \d{7}(?:-\d{3})?,ACE 为 \d{4,7},PSA 为 \d{7,9}),以及 ACE 位于 acegrading.com/cert/ 的查询链接;此外还有超出本简报范围的、读取标签二维码的 read(code:)。它的 ACE 形状是四到七位,比第 1 项要求的五位或六位更宽;它的 TAG 形状只接受一个字母加七位数字,所以第 1 项的混合代码检查(K4X93B27)在它上面不会通过;它的 PSA 形状是七到九位,而第 1 项保留七到十位。它的 verificationURL 也只对符合该评级公司自身形状的编号给出链接,而第 3 项对任何已记录的编号都显示按钮,把形状判断交给第 4 项的页脚。未提交的代码仍可能改动,也可能永远不会发布,所以本简报作为所提要求的记录和验收检查保持原样;等某个构建带上这些改动,再补一个附截图、注明日期的小节。80
标签读取器的任务,是把评级公司自己的文字准确带进收藏,然后把收藏者引向评级公司的记录。它无法判断一个评级壳是不是真的,也绝不能听起来像是判断过。PSA 的保证涵盖卡牌的等级和真伪,前提是索赔人购买时编号在 PSA 的查询中有效,而 PSA 对其意见负责,“as reflected on each PSA label”(以每张 PSA 标签上所反映的为准);按我的理解,查询是买家确认这一意见是否依然有效的方式,而应用只读了文字。1 下面是六项内容,每项都列出它要改动的文件,以及一个可由单元测试、UI 测试或脚本运行的检查。新测试使用通用占位符(CARD NAME、SET NAME),不用宝可梦的名字;现有测试中的卡名保持不变。提议的措辞用代码字体排出,以便与引文区分。
1. 按评级公司、按其公布的形状读取证书编号,并允许收藏者手动输入
先找到评级公司,再在 Kiradex/Scanner/SlabLabel.swift 中按该评级公司的形状找编号:101165121332
| 评级公司 | 接受 | 来源 |
|---|---|---|
| SGC | 先找 \d{7}、一个连字符和 \d{3},任何破折号都读作连字符,并允许其两侧有空格;否则找一个 \d{7} 的词元,且其后不能隔着空格或破折号再接数字 |
“For black labels, enter all 7 digits. For green and white labels, enter all 11 characters (XXXXXXX-XXX).”(黑标请输入全部 7 位数字。绿标和白标请输入全部 11 个字符(XXXXXXX-XXX)。) |
| TAG | 一个 8 字符、至少各含一个字母和一个数字的串,优先 [A-Z]\d{7} |
“typically 1 Letter followed by 7 Numbers”(通常是 1 个字母后跟 7 个数字);“a mix of numbers and letters”(数字与字母混合) |
| ACE | 在所在行中单独成立的 5 位或 6 位数字串 | ACE 的记录 #02289 和 #242548 |
| PSA、CGC、BGS | 现有的 7 到 10 位数字 | 读到的页面上没有格式 |
每个形状都要与它所在的整个词元匹配,绝不只匹配词元的一部分。对 SGC,先把相机可能返回的每一种破折号(U+2010 到 U+2015,以及减号 U+2212)读作连字符,把七位数字、连字符和三位数字视为一个代码,即使连字符两侧有空格也是如此,存为 1234567-001。SGC 的黑标形状七位数字恰好是其绿标形状的开头,所以七位数字之后隔着空格或破折号再接数字的,不是黑标代码:1234567 001 和 1234567-0012 不属于任何一种形状;一行以七位数字结尾、下一行以破折号开头,或下一行以三位数字开头且没有第四位,也同样不属于,这是同一个代码被拆成两行返回;遇到这些情况,都不读取编号,而是让扫描面板询问编号(第 4 项),而不是存成 1234567,那不是标签上的编号。这条规则有两个副作用:同一行后面跟着等级的黑标编号(1234567 10),或下一行以三位系列编号(025/198)开头的黑标编号,也会不读取。本文读到的标签都没有出现这两种情况。1014 证书编号以字符串保存,前导零和连字符都保留。只在已经判定为证书编号的串内部,把相机读成的 O 折叠为 0、I 折叠为 1;按我对 TAG“a mix of numbers and letters”(数字与字母混合)的理解,在 TAG 代码内部绝不这样做,因为那里的 O 或 I 可能就是它看上去的那个字母。6553
防护跟着原因走。 现在,凡是带有 ACE 自己记录那样编号的 ACE 标签都会丢失,因为这些五位和六位编号不是 7 到 10 位数字串,所以 certNumber 为 nil,isAlsoCardText 防护无论哪个标识都会把 ACE 拒掉(第 6 节)。防护要保留,因为卡上印着“ACE SPEC”和“TAG TEAM”,但要改为按各评级公司自己的形状:当某个单独的一行有 5 位或 6 位数字、且写有 ACE 名称的那一行没有 SPEC 时,ACE 才算数;当它的 8 字符代码出现时,TAG 才算数。3214
不改折叠单词的匹配。 在折叠后的单词(acegradingcom)中匹配 acegrading,不属于本项。有了上面的防护,实测中的每一张 ACE 标签不靠它也能读出,包括带地址的那张,因为每张也都印着“ACE”;而本文读到的 ACE 页面都没有说它的标签印着地址,所以这个改动是为一种没人展示过的版式而做的。因此不做。如果真有一张印着地址、没有单独“ACE”的 ACE 标签出现,那张标签就是编写这一改动时要用的测试。2814
证书编号字段要能输入字母和连字符。 副本编辑器的证书编号字段(Kiradex/Views/Card/CopyEditor.swift 中的 copy-certificate 字段,带 .keyboardType(.numberPad))打开的是数字键盘,所以收藏者无法输入 TAG 的字母或 SGC 的连字符,而第 4 项和要点却告诉收藏者自己输入编号。把它改为 .keyboardType(.asciiCapable),并加上 .textInputAutocapitalization(.characters) 和 .autocorrectionDisabled()。341110
检查(除另行注明外,都是 KiradexTests/ScannerTests.swift 中的新测试)。下面每张检查标签也都带一行 CARD NAME,与草案中的一样。实测输出的第 4 节为下面每项读取器检查并列打印现有读取器和简报规则的读取结果:SGC 绿标、TAG 和 ACE 这几行在现有读取器下失败,SGC 黑标和卡面文字这几行已经通过,放在这里是为了让它们继续通过。14
- 编号的形状,SGC:SGC + 10 GM + 1234567-001 得到证书编号 1234567-001;SGC + 10 GM + 1234567 得到 1234567。
- 格式错误的 SGC 代码不读取:SGC + NM/MT 8 + 1234567-0012 得到评级公司 SGC、等级 8,没有证书编号,1234567-01 也一样。现有读取器对两者都存为 1234567。1014
- 用别的破折号或带空格读出的绿标代码仍是一个代码:SGC + NM/MT 8 + 用短破折号(U+2013)连接的 1234567 和 001 得到 1234567-001,1234567 - 001 也一样;1234567 001 得不到证书编号,1234567 而下一行是 -001 也一样。现有读取器对这四种情况都存为 1234567。1014
- 编号的形状,TAG:TAG + GEM MINT 10 + A1234567 得到评级公司 TAG 和证书编号 A1234567;TAG + GEM MINT 10 + K4X93B27 得到评级公司 TAG 和证书编号 K4X93B27。
- 编号的形状和防护,ACE:ACE + MINT 9 + 242548 得到评级公司 ACE、等级 9、证书编号 242548;ACE + GEM MINT 10 + 02289 得到 02289,保留零。
- 防护对卡面文字仍然有效:现有的 wordsCardsPrintAreNotGraders 用例改用占位符写,仍返回 nil:CARD NAME + ACE SPEC + 153/162,以及 CARD NAME + TAG TEAM + 33/181。77
- 有一个现有期望会改变。 同一测试的第三个期望(KiradexTests/ScanSessionTests.swift 中的 wordsCardsPrintAreNotGraders)从 ACE + 10 + GEM MINT + 一个卡名 + 1234567 期望得到评级公司 ACE。按新的 ACE 规则,七位编号不是 ACE 证书编号,所以这个读取返回 nil,这一行照原样会失败。把它的编号改成 ACE 的六位记录 242548,单独占一行,并保留评级公司 ACE 的期望。7712
- 键盘,在 KiradexUITests/KiradexUITests.swift 中,用一个单独的新测试方法 testTheCertificateFieldTakesLettersAndAHyphen,以与 testScanningAGradedCardKeepsItsLabel 相同的参数(-fixtureCatalog、-scanFixture kira1-2、-scanSlab YES)启动:点按 Scan,像那个测试一样等待识别结果(先 scan-found-name,再 scan-found-details),然后点按 scan-details,清空 copy-certificate,输入 A1234567 并断言字段值为 A1234567;再清空,输入 1234567-001 并断言该值;到此结束,绝不点按 scan-have,所以输入的内容都不会被登记。它不放进 testScanningAGradedCardKeepsItsLabel:扫描面板打开的编辑器绑定在面板自己的 details 上(ScanResultPanel 把 $details 传给 CopyEditor),scan-have 会登记这些 details 中的任何内容,而那个测试后面会断言登记的副本那一行包含 49392218,在扫描出的编号上覆盖输入一个编号会破坏这一点。这项检查不改变任何现有期望。这项检查只涉及键盘改动:字段的值不经过读取器。它没有运行过;如果改动之前它就能通过,说明这次运行没有通过屏幕键盘输入,检查需要换一种形式。76757434
- 这些规则和第 2 项规则的 Python 草案,作为单独一节加进了实测脚本(measure_slab_parser.out.txt 的第 4 节,与对现有读取器的实测分开),它在 16 张标签中有 16 张读对评级公司、证书编号和等级数字(现有读取器:16 张中 9 张),第 1 项和第 2 项的 39 张检查标签全部按本简报所说读出,第 2 项写出的 15 条汇总字符串都符合其汇总规则,并按第 2 项所说合并了它全部 10 组连续观察。在草案下,移植检验运行的 7 个现有期望中有 6 个成立,第七个就是上面那个要改的 ACE 期望;它还运行的另外两个现有期望中,有一个按第 2 项所说改变。草案不是应用:Swift 的改动必须自己通过上面的测试。1415
2. 保留数字旁边的文字
给 SlabLabel、CopyDetails 和 CardCopy 各加三个字段,每个都带默认值,这是 CloudKit 的要求;docs/cloudkit-schema.ckdb 中的 schema 也加上它们,并在发布前部署:3373
gradeWords:印出的等级文字,转为大写:从等级那一行去掉数字以及该评级公司所列的修饰标记(GEM MT、PRISTINE、MINT+、SGC 的PRI或GM),或者在数字单独成行时,取它旁边那一行的等级文字;什么都没读到时为空。读取器的等级用词扩展为六家评级公司已保存量表页面上所印等级名称中的每一个词:现有的十个,加上excellent、fr、gm、near、nrmt、perfect、pr、pri和very。这样 CGC 旧版的PERFECT在10之上、PSA 的PR在1之上时,文字都能保留,而现有列表会把它们丢掉。新词中有四个只在量表使用它们的位置才算数,以免系列行上的小数字变成等级:near只在mint之前,very只在good之前,PSA 的PR和FR只在作为整行描述、或紧挨在 PSA 给它们的数字 1 和 1.5 之前时才算。系列行上EX旁边的小数字,现在会被读成带文字的等级,以后仍然如此;本文读到的标签都没有出现这种情况。3216846742qualifier:对 PSA,是 OC、ST、PD、OF、MK 或 MC 之一;对 ACE,是 OC 或 MC,即它所列修饰标记中评级壳里的卡可以带的那两个;当它与数字一起印出时读取,无论连写(9OC)还是分开(9 OC)。连写的代码只从本身带有等级用词的那一行的词元中读取,比如MINT 9OC;在别处,连着字母的数字根本不算等级,与现有读取器一样,所以应用自己测试中的 PSA 读取所带的1ST EDITION那一行里的1ST,既不是等级 1,也不是修饰标记 ST。并且当同一行或相邻行上有一个带等级用词的单独等级数字时,它优先于连着代码的数字,所以相机把1ST EDITION和GEM MT连成一行时,仍能得出 10;只有MINT 9OC时,仍读作 9 带 OC。同一行里有多个连着代码的数字时,紧跟在等级用词后面的那个优先,所以在1ST EDITION和MINT 9OC连成一行时,MINT 9OC胜过1ST。ACE 说它会把“OC to the grade”(OC 加在等级后);它如何印 MC 没有说明,所以把 MC 也按同样方式读取,是一个假设。其他评级公司没有修饰标记列表,因为本文读到的它们的页面都没有给出。一个评级公司没有列出的代码,比如 CGC 标签上的 OC,对这家评级公司不算修饰标记,但也不丢弃:无论与数字连写还是分开印出,都去掉数字后留在gradeWords里,所以等级行上印的东西一样都不会丢。163425032designation:AUTHENTIC、ALTERED AUTHENTIC 或 AUTHENTIC ALTERED、AUTHENTIC ART,在没有印数字的地方读取。164
CopyDetails.summary 按存储的样子显示它们,保持读到时的大写,绝不改成首字母大写:首字母大写会把 PSA 的 GEM MT 变成 Gem Mt,把 SGC 的 NM/MT 变成 Nm/Mt,这些拼法没有一个已保存的评级公司页面使用过,而扫描面板本来就把标题设为大写(ScanResultPanel 中的标题带有 .textCase(.uppercase))。顺序是固定的:评级公司、等级文字、数字、修饰标记;没有印数字时,是评级公司和标注。所以汇总读作 PSA MINT 9 OC、CGC PRISTINE 10、CGC MINT+ 9.5 和 PSA AUTHENTIC;顺序是应用的,不是每张标签的,所以 SGC 的 10 GM 读作 SGC GM 10。不做任何推断,也不改写任何东西:旧版 CGC 的 GEM MINT 9.5 读作 CGC GEM MINT 9.5,附注 CGC now counts this as Gem Mint 10,这是 CGC 自己的旧版对照,绝不把它改成 10。4575506
文字随标签经过四个地方,每一处都必须带上它们:33727134
Kiradex/Models/CardCopy.swift中的CopyDetails.init(label:),从标签复制这三个新字段。Kiradex/Scanner/Sighting.swift中的merged(with:),在后一次观察补全前一次时,用评级公司、等级和证书编号重建标签。按现在的写法,第二次观察一合并进来,第一次读到的文字就会丢掉。新字段不是逐个合并的:等级的陈述,即它的数字、gradeWords、qualifier和designation,作为一个整体移动。后一次观察既没读到数字也没读到标注,就是没读到陈述,前一次的陈述原样保留。后一次观察读到了不同的数字,或者在前一次有数字的地方读到了标注,或者反过来,就是读到了不同的陈述,四个字段全部取它的值,空值也照取,所以MINT 9 OC之后是GEM MT 10,结果是PSA GEM MT 10,绝不会是PSA GEM MT 10 OC。后一个标注包含前一个,或被前一个包含时,保留较长的那个:在一次读到ALTERED AUTHENTIC的观察之后,又一次只读到AUTHENTIC,是漏了一个词,而不是读到了另一种结果。既不包含前一个、也不被前一个包含的标注,比如AUTHENTIC ALTERED之后的AUTHENTIC ART,是一个不同的陈述,会取而代之。后一次观察读到相同的数字或相同的标注时,它读到了文字和修饰标记的,就保留它自己的,什么都没读到的,就保留前一次的:读取器无法区分一次漏读了OC的观察和一张原本就没印它的标签,而在同一个数字旁读到字母的那次观察,被视为更完整的读取。证书编号像现在一样保留较长的读取,setText(第 6 项)保留第一次的。CardCopy.swift中CopyDetails的逐成员初始化方法,增加这三个参数,默认值为空。- 同在
CardCopy.swift中的CardCopy.details,是一个计算属性,它的 getter 通过那个初始化方法用存储的字段构建一个CopyDetails,setter 再把它们写回。两者都要加上这三个新的存储字段。检查器中一份副本的那一行显示copy.details.summary,它的标识符是copy-后接这条汇总(Kiradex/Views/Card/CopyEditor.swift中的CopiesSection),所以如果 getter 保持不变,一个已保存的PSA GEM MT 10会变回PSA 10。
检查:
- PSA + MINT 9OC + 00000000 得到等级 9、修饰标记 OC 和汇总 PSA MINT 9 OC;PSA + MINT 9 OC + 00000000 得到同样的结果。
- PSA + AUTHENTIC + 00000000 得到无等级、标注 AUTHENTIC 和汇总 PSA AUTHENTIC。
- CGC + PRISTINE 10 和 CGC + GEM MINT 10(都带 3732635008)得到不同的 gradeWords 和不同的汇总,CGC PRISTINE 10 和 CGC GEM MINT 10,两者都没有附注。
- CGC + GEM MINT 9.5 + 3732635008 得到带旧版附注的汇总 CGC GEM MINT 9.5;CGC + MINT+ 9.5 + 3732635008 得到不带附注的 CGC MINT+ 9.5。
- SGC + 10 PRI 和 SGC + 10 GM(都带 1234567)得到不同的 gradeWords(PRI、GM)以及汇总 SGC PRI 10 和 SGC GM 10,所以 SGC 的两个 10 分保持区分。
- ACE + MINT 9 OC + 242548 得到等级 9 和修饰标记 OC,ACE + MINT 9OC + 242548 也一样。实测的十六张中没有带 OC 的 ACE 标签,而现有读取器读不出任何带有 ACE 自己五位或六位编号的 ACE 标签,在修饰标记起作用之前就已经漏掉了;Python 草案对两者都按本检查所说读出。4214
- ACE + MINT 9 MC + 242548 得到修饰标记 MC,基于上文关于 ACE 如何印 MC 的假设;CGC + MINT 9 OC + 3732635008 得到等级 9、没有修饰标记,因为 CGC 没有列出修饰标记,gradeWords 为 MINT OC,汇总为 CGC MINT OC 9;CGC + MINT 9OC + 3732635008 得到同样的结果。这些字母对 CGC 不算修饰标记,但也没有被丢弃:它们去掉数字后留在等级文字里,所以汇总的固定顺序把它们放在数字之前。42414
- PSA + CARD NAME + 1ST EDITION + GEM MT 10 + 00000000 得到等级 10、没有修饰标记、gradeWords 为 GEM MT、汇总为 PSA GEM MT 10;CGC + CARD NAME + 1ST EDITION + MINT 9 + 3732635008 得到等级 9、没有修饰标记、gradeWords 为 MINT、汇总为 CGC MINT 9。PSA 为初版卡写的 CardFacts 标题以 1ST EDITION 结尾,应用测试键入的 PSA 读取也带着同样的一行,但它与等级文字之间隔着 #4,所以那些测试碰不到这种情况。一个从任何数字读取连写代码的读取器,会把两张标签都读成等级 1,PSA 那张还带修饰标记 ST;现有读取器两张都读对,因为它的等级模式不接受数字后面跟字母,而 Python 草案对两者都按本检查所说读出。50583214
- 如果相机把两栏连成一行,单独的数字仍然胜出:PSA + CARD NAME 1ST EDITION GEM MT 10 + 00000000 得到等级 10、没有修饰标记,PSA + 1ST EDITION GEM MT + 10 + 00000000 也一样。只有连写代码规则时,两行都带等级用词,1ST 被计入,而两个同样高的数字中保留第一个,所以两者都读成等级 1 带修饰标记 ST;现有读取器对两者都给出 10。这项检查只断言等级和修饰标记:在连成一行的情况下,gradeWords 按读到的样子保存该行其余部分,卡面文字也包括在内。相机是否真的会把 PSA 标签的两栏读成一行,没有测量过。3214
- 在带修饰标记的等级旁连成一行时,等级用词后面的代码胜出:PSA + CARD NAME 1ST EDITION MINT 9OC + 00000000 得到等级 9 和修饰标记 OC。没有这条规则,就没有可以优先的单独数字,1ST 成为两个同样高、都连着代码的数字中的第一个,标签被读成等级 1 带修饰标记 ST;现有读取器从中读不出等级,因为它不接受数字后面跟字母。3214
- CGC + CARD NAME + PERFECT + 10 + 3732635008 得到 gradeWords 为 PERFECT 和汇总 CGC PERFECT 10;PSA + CARD NAME + PR + 1 + 00000000 得到 gradeWords 为 PR 和 PSA PR 1。两者都把文字单独放在数字上方的一行,即应用自己 PSA 测试读取的版式。4165814
- 系列行上的小数字不是等级:PSA + 2007 POKEMON POP SERIES 5 + CARD NAME VERY + #4 + NM-MT + 8 + 00000000 得到等级 8 和 gradeWords 为 NM-MT,PSA + 2019 POKEMON PR 5 + CARD NAME + #4 + MINT + 9 + 00000000 得到等级 9 和 gradeWords 为 MINT,与现有读取器一样。如果 very 和 pr 不论出现在哪里都算数,两者都会被读成等级 5。14
- 连续观察,在 merged(with:) 的单元测试中,每一对的证书编号都相同:PSA MINT 9 OC 之后是 PSA GEM MT 10,得到不带修饰标记的 PSA GEM MT 10;GEM MT 10 之后是 MINT 9 OC,得到 PSA MINT 9 OC;MINT 9 OC 之后是 MINT 9,得到 PSA MINT 9 OC;GEM MT 10 之后是单独的 10,保留 GEM MT;MINT 9 OC 之后是一次没读到等级的观察,保留 PSA MINT 9 OC;MINT 9 之后是 AUTHENTIC,得到无等级、标注 AUTHENTIC 和 PSA AUTHENTIC;AUTHENTIC 之后是 GEM MT 10,得到不带标注的 PSA GEM MT 10;ALTERED AUTHENTIC 之后是 AUTHENTIC,保留 PSA ALTERED AUTHENTIC;CGC AUTHENTIC ALTERED 之后是 CGC AUTHENTIC ART,得到 CGC AUTHENTIC ART;CGC GEM MINT 10 之后是 CGC PRISTINE 10,得到 CGC PRISTINE 10。没有一个合并后的标签同时带有等级和标注。Python 草案十组全部运行;按它所取代的规则,即后一次观察有哪个字段就保留哪个,MINT 9 OC 之后是 GEM MT 10 会得到 PSA GEM MT 10 OC,另有两组会在等级旁边存下一个标注,而 ALTERED AUTHENTIC 那一组会丢掉 ALTERED。7214
- 保存后读回,在 KiradexTests/CopyTests.swift 中:一份用 addCopy(of:details:) 从标签 PSA + MINT 9OC + 00000000 添加的副本,通过同一个内存容器上的第二个 ModelContext 读回,得到 gradeWords 为 MINT、修饰标记 OC 和汇总 PSA MINT 9 OC;从 PSA + AUTHENTIC + 00000000 添加的副本,得到标注 AUTHENTIC 和汇总 PSA AUTHENTIC。这项检查确认 CardCopy.details 会存储并返回这些文字。8133
- 改动之前保存、新字段为空的副本,仍读作 PSA 10:KiradexTests/CopyTests.swift 中 aRawCopyKeepsItsCentring 现有的汇总期望不经修改即可通过。8114
- 会改变的现有期望。 KiradexTests/ScanSessionTests.swift 中的 aGradedCardCarriesItsLabel 把整个标签与一个由评级公司、等级和证书编号构建的标签比较;它的读取印着 GEM MT 10,所以按本项,标签还会带上 gradeWords GEM MT,期望的标签也随之加上(草案运行了这一条,发现它确实如此改变)。在 KiradexUITests/KiradexUITests.swift 的 testScanningAGradedCardKeepsItsLabel 中,固定样例在 10 旁边印着 GEM MT。如果读取器把它们当作等级文字,也就是本项的本意,它的两个期望会改变。测试期望包含 PSA 10 的扫描面板标题(scan-found-details)会读作 PSA GEM MT 10 · Cert 49392218,所以期望的文字变为 PSA GEM MT 10。副本那一行的标识符由汇总构成,会变为 copy-PSA GEM MT 10,测试查找的按钮也随之变为它。它对 scan-found-readings 不存在的期望不变:第 4 项让评级副本的那一行保持为空。草案没有为画出来的固定样例建模,因为它的行序取决于相机如何读这幅图。777634757814
3. 把每家评级公司的查询作为链接提供,并且只作为链接
修改 Grader.verificationURL(cert:) 和副本编辑器的 Look Up at 按钮(位于 Kiradex/Views/Card/CopyEditor.swift,目前只在有链接时显示):3234
| 评级公司 | 链接 | 按钮 |
|---|---|---|
| PSA | https://www.psacard.com/cert/<n>,不变:PSA 自己的 CardFacts 页面链接的形式 |
Look Up at PSA |
| CGC | https://www.cgccards.com/certlookup/<n>/,不变 |
Look Up at CGC |
| TAG | https://my.taggrading.com/card/<n> |
Look Up at TAG |
| ACE | https://acegrading.com/cert/<n> |
Look Up at ACE |
| SGC | https://www.gosgc.com/cert-code-lookup |
Copy Number, Open SGC Look-Up(先复制代码) |
| BGS | https://www.beckett.com/grading/card-lookup |
Copy Number, Open Beckett Look-Up |
链接的来源:PSA 自己的 CardFacts 链接、CGC 的索引形式、TAG 自己的证书搜索脚本、ACE 的记录页面、SGC 的查询页面和 Beckett 存档的查询页面。544841121031
除非在手机上看到它失效,否则保留 PSA 的链接。 应用的 PSA 链接是 https://www.psacard.com/cert/<n>,也就是 PSA 自己的 CardFacts 页面为它链接的每个证书使用的形式(231 个链接、201 个编号,没有一个在编号后面加 /psa)。325415 /cert/<n>/psa 这种形式的唯一依据是未保存的搜索索引结果。调研笔记记录,两种形式对脚本都返回了机器人检查,所以都没有看到它们到达记录。47 除非在手机上的检查显示当前形式失效,否则什么都不改:在手机上的 Safari 中,用收藏者自己拥有的一个编号打开 https://www.psacard.com/cert/<n>;如果显示了记录,链接保持不变;只有在它不显示、而 /cert/<n>/psa 能显示时,才切换链接。Beckett 的链接会重定向到其维护页面,直到它的查询在“Phase 1”(第一阶段)恢复。29
应用在浏览器中打开评级公司的页面,绝不自己去抓取。 调研笔记记录,PSA、CGC 和 ACE 的查询前面都有机器人检查;为 PSA 数量报告保存的文件是登录页面;SGC 的表单带有 reCAPTCHA;PSA 的 API 需要用收藏者自己的 PSA 登录生成的令牌。4748491055 出于同样的原因,应用不显示自己的“verified”(已核验)状态:它什么也没查。
检查:
- 按钮的动作是一个函数 Grader.lookUp(cert:),它返回要打开的页面以及要复制的文本(如果有);按钮先把该文本写入剪贴板,再打开页面。对这个函数的单元测试,针对一个示例编号断言每家评级公司的页面,包括 02289(ACE,保留零)和 A1234567(TAG);断言 SGC 和 BGS 的页面不带编号,要复制的文本是原样的证书编号(1234567-001、0012345678);并断言其余四家什么都不复制。只要有已记录的编号,不论其形状如何,按钮都会显示,测试也断言这一点:一个属于另一家形状的编号,比如 SGC 下的 49392218,仍然得到 SGC 的页面,并原样复制。标出形状不对的编号的是第 4 项的页脚,而不是按钮。
- 一个单独的新 UI 测试 testTheGraderPickerOffersEachGradersLookUp,以与 testScanningAGradedCardKeepsItsLabel 相同的参数(-fixtureCatalog、-scanFixture kira1-2、-scanSlab YES)启动,点按 Scan,像那个测试一样等待识别结果(先 scan-found-name,再 scan-found-details),然后点按 scan-details,此时固定样例的 PSA 标签已经把 49392218 放进证书编号字段(查询按钮只在记录了编号时才显示),把 Grader 选择器设为 SGC,断言存在标题为 Copy Number, Open SGC Look-Up 的按钮;再设为 BGS,断言 Copy Number, Open Beckett Look-Up。它绝不点按 scan-have,所以副本不会被登记。它不放进 testScanningAGradedCardKeepsItsLabel,原因见第 1 项的键盘检查:选择器写入的是扫描面板自己的 details,所以那个测试会登记一份 BGS 副本,而它对 copy-PSA GEM MT 10 这一行(第 2 项)的查找就会失败。这项检查不改变任何现有期望。它不点按按钮:点按会通过 openURL 打开页面,把应用切到浏览器,所以复制了什么在上面的单元测试中断言,不在 UI 测试中从剪贴板读回。767534
- 一项脚本检查:如果 Kiradex/ 下任何 Swift 文件以评级公司的主机(psacard.com、beckett.com、cgccards.com、gosgc.com、taggrading.com、acegrading.com)调用 URLSession,就判为失败。
- PSA 链接保持 https://www.psacard.com/cert/<n>(KiradexTests/ScannerTests.swift 中 aPSALabelGivesGraderGradeAndCertificate 现有的链接断言不经修改即可通过);切换到 /cert/<n>/psa 的改动,只有在改动说明中附注写明手机检查、检查日期、当前形式失效以及另一种形式显示了记录时,才能发布。58
4. 说明读到了什么、没读到什么
每个新字符串都只有一个位置,没有一个重复其所在屏幕已经显示的内容。扫描面板的读数行保持现状,只用于裸卡:ScanResultPanel 的 readings 对任何带评级公司的副本都返回 nil,所以评级副本的字符串都不放在那里。每个字符串都来自视图调用的一个函数,就像编辑器的居中度页脚如今来自 CenteringNote.text(for:) 一样,这样单元测试就可以断言它。75347471
| 情形 | 放在哪里 | 说什么 | 理由 |
|---|---|---|---|
| 一份带编号的评级副本,编号是读到的或键入的 | 副本编辑器中评级副本的页脚,放在它现在显示的那句话之后 | Check the number at PSA before you rely on the label. 扫描面板的标题已经显示等级和编号(PSA MINT 9 OC · Cert 00000000),所以这个字符串不再重复它们 |
PSA 的保证要通过查询才成立 |
| 读到了评级公司,没读到编号 | 扫描面板的标题,放在汇总之后、本该是编号的位置 | PSA 10 · Cert not read. Type it from the label, or hold the case closer. |
编号是钥匙 |
| 读到了评级公司和编号,但既没读到等级也没读到标注 | 扫描面板的标题,放在编号之后 | PSA · Cert 00000000 · Grade not read. Pick it as the label prints it. |
现在连写的“9OC”会丢失等级 |
| 已记录的编号不是该评级公司使用的形状 | 副本编辑器中评级副本的页脚 | This number doesn't match TAG's certificate format (8 letters and numbers, typically a letter and 7 numbers). Check it against the label. 判断依据是第 1 项为该评级公司定的形状,所以页脚只对读取器同样会拒绝的编号显示:对 TAG 而言,是任何不是 8 个字符、且不同时含有字母和数字的编号 |
TAG 公布的形状:“typically”(通常)一个字母加 7 个数字,以及“a mix of numbers and letters”(数字与字母混合) |
| 为标签多看的几次之后仍什么都没读到 | 裸卡副本的扫描面板读数行,放在居中度那一行之后(措辞按居中度简报所给),在为标签多看的次数(ScanSession.looksForALabel)用完且一无所获之后 |
No grading label read. If this card is in a case, add the grader and number by hand. |
现在的 ACE 评级壳 |
| 编号已在另一张卡上 | ScanView 现在为已登记编号显示的警告提示条,替换其措辞 |
PSA 00000000 is already on CARD NAME in your collection. |
重复检查只看一张卡 |
理由的来源:PSA 的保证、实测、TAG 的 TAGD 页面和应用的重复检查。1141133
现有 UI 测试看到的内容。 在固定样例标签上,等级和编号都能读到,所以本项不给它的标题增加任何内容。在 testScanningAGradedCardKeepsItsLabel 中,对 scan-found-details 的期望只按第 2 项所说改变,对 scan-found-readings 不存在的期望保持不变。在针对裸卡的 testScanningACardRegistersIt 中,对 scan-found-readings 的两个期望要求它包含 up to a 10 和 not judged。前一个该由居中度简报而不是本简报来改:那份简报从应用的字符串中去掉“Allows up to a”和“ceiling”,扫描面板的那一行也在其中,并换上评级公司公布的正面数值,所以本简报对那一行采用那份措辞,期望变为 front figure,这个短语出现在那份简报对“Allows up to a 9”的替换中(“Inside PSA’s and SGC’s published front figure for a 9”,在 PSA 和 SGC 公布的 9 分正面数值之内),也出现在它对 10 分的措辞中(“within PSA’s published 55/45 front figure for a 10”,在 PSA 公布的 10 分正面数值 55/45 之内),后者是那份简报用来替换“PSA 10 centering”的;一张画在正中央的卡会带上 10 分的那行措辞,这是我的理解。对 not judged 的期望保留:那份简报没有去掉它。本项的句子无论那一行措辞如何都放在它之后,并且不给评级副本的面板增加任何内容。69 第 1 项和第 3 项的新 UI 检查都是各自独立、从不登记副本的测试方法,所以都不改变这些;本简报在 testScanningAGradedCardKeepsItsLabel 内部加入的唯一检查是第 6 项的,它只读一个字段,不往里输入任何东西。7675
在应用自己的话语中,除引用标签上的标注外,不要使用“verified”“authentic”“genuine”和“certified”:应用读的是文字,没有核对记录。也不要涉及任何关于价值的内容。
检查:
- 单元测试用合成读取结果或副本详情构造每种情形,并断言由放置它的函数给出的字符串。
- 一项脚本检查:如果 Kiradex/ 下任何 Swift 字符串字面量中,以完整单词出现“verified”或“authentic”(不论大小写),就判为失败,只有一个指名的例外:Kiradex/Scanner/SlabLabel.swift 中读取器自己的标注列表,第 2 项会把 AUTHENTIC、ALTERED AUTHENTIC、AUTHENTIC ALTERED 和 AUTHENTIC ART 放在那里。检查只读字符串字面量,不读代码:一次普通的逐行搜索会被 Kiradex/Services/PatronStore.swift 中 StoreKit 的 .verified case 绊住,而那是代码,不是文案。82 汇总显示的标注来自存储的字段,不来自字面量,而选择器中的 Authentic 条目(第 5 项)位于打包数据中,不在 Swift 里。按 2026 年 10 月 5 日对工作树(即提交 5a344e3f 时的状态)的搜索,目前 Kiradex/ 下没有任何 Swift 字符串字面量含有这两个词。10 月 15 日的工作树加入了字面量 "Professional Sports Authenticator",即 PSA 的全称,完整单词匹配会放过它,子串匹配则不会;对那个工作树做完整单词搜索,两个词都找不到。80
- isRegistered 增加一个在所有 CardCopy 中查找评级公司和编号的变体;一个测试在一张卡上登记 PSA 00000000,并期望把同一编号添加到另一张卡时出现警告。33
5. 只提供每家评级公司会给的等级
副本编辑器的等级选择器(CopyEditor.swift 中的 Grade 选择器,目前对每家评级公司都提供 CopyEditor.grades,即 10 到 1、以 0.5 为步长)改为从评级公司获取列表:34
- PSA: 10、9、8.5 到 2,然后是 1.5 和 1,没有 9.5;外加 Authentic 和 Altered Authentic,即第 2 项作为标注读取的两种结果。16
- BGS: 从 1 到 10、以 0.5 为步长,10 名为 Pristine,9.5 名为 Gem Mint,与 Beckett 量表的命名一致;黑标不是等级,不在列表中。89
- CGC: 它的二十个标准卡等级,Pristine 10 和 Gem Mint 10 分开;标注 AU、AA 和 ART;以及旧版对照中的等级,即 CGC Trading Cards 和 CSG 的 Gem Mint 9.5(CGC 按 Gem Mint 10 计)和 Perfect 10(“Retired grade; retains Perfect 10 status”,已停用的等级;保留 Perfect 10 的地位),每个都标为旧版,这样较早的标签可以照印出的样子录入,而旧版 9.5 绝不会被硬塞成 Mint+ 9.5 或 Gem Mint 10。4
- SGC: 它量表上的等级,10 PRI 和 10 GM 分开。6
- TAG: 以 0.5 为步长、没有 9.5,Pristine 10 和 Gem Mint 10 分开。7
- ACE: 从 1 到 10 的整数等级。42
把这些列表作为打包数据保存,附上来源地址和读取日期,就像居中度简报保存它的容差那样,这样量表一变,改一处数据、加一个测试即可。69
检查: 一个测试加载数据并断言:PSA 没有 9.5,并有它的两个标注;ACE 没有半分;CGC、SGC 和 TAG 各有作为不同条目的 Pristine 10 和 Gem Mint 10(CGC 还有它的两个旧版 Perfect 10,分别属于 CGC Trading Cards 和 CSG);CGC 有 AU、AA 和 ART,其旧版条目各自标为旧版;每个列表都有 source 和 read 日期。
6. 照印出的样子保留 PSA 的系列文字
暂不改动匹配器。每当读到一张 PSA 标签,就把标签上的系列文字原样记录到副本现有的 notes 字段(CopyDetails.notes 和 CardCopy.notes)中,以便日后能从真实标签建立一份从 PSA 系列名到图鉴系列的对照表。不要用二手列表来建这份对照表。50533346
哪一行是系列文字。 读取结果中第一个以四位年份、一个空格和一个字母开头的行(^\d{4} [A-Z])。在固定样例标签上是 2026 KIRA BASE,即它画出的六行中的第一行;固定样例的证书编号 49392218 也以四位数字开头,但后面没有空格,所以不算。在应用测试键入的 PSA 标签上,是 1999 POKEMON GAME。没有这样一行的标签什么都不记录。785877
它如何到达副本。 SlabLabel 只对 PSA 以 setText 携带这一行;CopyDetails.init(label:) 把它写入 notes;merged(with:) 在后一次观察没有它时保留第一次观察的,与第 2 项对文字的处理一样。不增加新的存储字段。CopyEditor 中的 Notes 字段目前没有无障碍标识符;这次改动给它加上 copy-notes,供下面的检查使用。由于 aGradedCardCarriesItsLabel 比较整个标签,而它的读取以 1999 POKEMON GAME 开头,期望的标签除了第 2 项的文字外,还要加上这个 setText。Python 草案没有为本项建模。3372347714
这条规则在每张 PSA 标签上都会触发,而不只在匹配不确定时,这样下面的检查就不取决于固定样例的匹配有多确定。按我对 CardIndex.match(_:) 的理解,当按编号读出的卡中恰好有一张也读出了卡名时,匹配就是确定的;固定样例卡上同时画着卡名和完整的收藏编号,因此会确定匹配;一条只限于不确定匹配的规则,在它上面永远不会触发。这一理解没有运行验证。5378
检查: 用 -scanSlab YES 扫描固定样例标签,会把 2026 KIRA BASE 放进扫描所得副本的 notes;UI 测试 testScanningAGradedCardKeepsItsLabel 在它已经打开详情(scan-details)并检查证书编号字段的那一步,同时断言字段 copy-notes 中是 2026 KIRA BASE。它只读这个字段,不输入任何内容,也不点按其他任何东西,所以那个测试接着登记的副本,就是扫描器读出的那一份,而它后面查找那一行所依据的汇总并不包含 notes。767834
不在本简报范围内
- 在应用内部抓取任何评级公司的记录。机器人检查、登录页面、reCAPTCHA 和账户令牌挡在 PSA、CGC 和 SGC 的查询前面,而 Beckett 的已下线;ACE 的两条记录正常返回,TAG 的记录没有试过,简报对这两家一视同仁,都作为链接处理。474810552912
- 判断一个评级壳或一张标签是不是真的。应用能做的是说明它读到了什么,并把收藏者引向评级公司。
Grader中六家之外的评级公司;它们的页面一个都没有读。- 在应用中显示价格或数量。数量报告统计的是评级壳而不是卡,用 CGC 的话说,“not an indicator of value or rarity”(并不代表价值或稀有度)。60
- 评级公司的标志、标签颜色或评级壳图片,无论在应用中还是在它显示的任何内容里。
核心要点
如果您是收藏者
- 每个评级壳都按证书编号,到制作它的评级公司查询。PSA 对其意见负责,“as reflected on each PSA label”(以每张 PSA 标签上所反映的为准);按我的理解,查询是买家确认这一意见是否依然有效的方式,而 PSA 的保证要求索赔人购买这张卡时,编号在 PSA 的查询中有效。12
- 读文字,不只读数字。PSA 的 OC、ST、PD、OF、MK 和 MC 会改变数字的含义;AUTHENTIC 可能是一张改动过的卡;CGC 的 9.5 是旧版 Gem Mint(现为 10 分)或现行 Mint+(低于 10 分);CGC、SGC 和 TAG 把 Pristine 10 与 Gem Mint 10 分开评;而在 Beckett,唯一的 10 分是 Pristine,Gem Mint 是 9.5,黑标表示四项子分数都是 10 的 Pristine 10。161456789
- 把编号完整输入。SGC 的绿标和白标需要全部十一个字符,包括连字符;TAG 的编号带有字母。1011
- 只核对评级公司公布的内容:PSA 的 LightHouse 标志、易褪油墨和 UV 图案;CGC 的微缩印刷、UV 油墨和全息箔;TAG 的 Proof Mark 及其应用;ACE 扫描标签后打开的地址。对 Beckett 和 SGC,查询就是核验。242511282627
- 把数量报告当作评级壳的计数来读,它既不是卡的计数,也不是价值的计数。5660
如果您在开发应用
- 先找评级公司,再按该评级公司的形状读编号,并让证书编号字段能输入字母和连字符;现有读取器在按公开格式构造的十六张合成标签中只完整读对 3 张,它那条单一的“7 to 10 digits”(7 到 10 位数字)规则会截短 SGC 和 TAG 的编号,而由于 ACE 自己的记录更短,凡是像那些记录一样编号的 ACE 评级壳它都会漏认。14153234
- 错误的证书编号比缺失的更糟:把证书编号存为字符串,保留零和连字符,并标出形状不是该评级公司所用的编号。141011
- 在数字旁边保存等级文字、修饰标记和标注;仅凭评级公司、等级数字和证书编号,无法区分 Pristine 10 和 Gem Mint 10,也无法区分 PSA 的 9 和 9 OC。3314
- 链接到每家评级公司自己的查询,绝不自己抓取:机器人检查、登录页面、reCAPTCHA 和账户令牌挡在 PSA、CGC 和 SGC 的查询前面,而 Beckett 的已下线。4748105529
- 只根据评级公司自己的公告给标签改动定日期:本文自己的计划曾把 PSA 的 LightHouse 标签定为 2023 年,而 PSA 的文章把它定在 2017 年 6 月 14 日;2023 年的改版是 CGC 的。1923
常见问题
如何核验 PSA、CGC 或 Beckett 的评级壳
到制作这个评级壳的评级公司查询证书编号。PSA 的查询位于 psacard.com/cert,它的应用可以扫描标签上的条形码;CGC 的查询位于 cgccards.com/certlookup,它标签上的二维码可以在 CGC 网站上查询这张卡;Beckett 的卡牌查询是一个可选 BGS、BVG 或 BCCG 的表单,撰写本文时已下线,预计在 Beckett 恢复的第一阶段重新上线。PSA 的保证取决于索赔人购买这张卡时,编号在其查询中是否有效,并且把遭篡改或伪造的封装壳和标签排除在外,“regardless of certification status”(无论其认证状态如何)。38242531291
PSA 标签上的 OC 是什么意思
偏心。PSA 的标准说,偏心的卡“will either by designated “OC” or will have a numerical grade that reflects the minimum centering allowed for the grade,”(要么被标为“OC”,要么得到一个反映该等级所允许的最低居中度的数字等级),它术语表中的例子是一张除居中度外都符合 Mint 9 标准的卡,这张卡“would be designated Mint 9oc.”(会被标为 Mint 9oc。)PSA 还定义了另外五个:遵循同样二选一规则的 ST(污渍)、PD(印刷缺陷)和 OF(失焦),以及用于有字迹或切割不典型的“Any and all cards”(所有卡,一律如此)的 MK(笔迹)和 MC(切割偏差)。163
评级卡标签上的“Authentic”是什么意思
在 PSA,“AUTHENTIC”意味着“PSA is only certifying that the item is genuine, without a numerical grade”(PSA 只认证该物品是真品,不给数字等级);按 PSA 的概括,该物品“is real but nothing more.”(是真的,但仅此而已。)PSA 列出了一张卡可能得到它的原因:改动、“a major defect”(重大缺陷),或送评人的要求。它针对尺寸偏小的卡(N6)和出厂切割偏差(N8)的无分数代码也可能导向它,另有五个,针对修边、修复、补色、纸张改动和清洁,可能导向“Authentic Altered”;每种情况都只在评级员酌情决定、并且送评人在单上提出要求时才会如此。PSA 的保证说,标为“Authentic”的物品“must be viewed as potentially interchangeable with “Authentic Altered,””(必须视为可能与“Authentic Altered”互换),因为 PSA“does not always print the term “Altered” on the label itself”(并不总是在标签上印出“Altered”一词);它的标准页面就该保证而言,把仅“Authentic”的标注称为与 Authentic Altered“interchangeable”(可互换),没有“potentially”(可能)。在 CGC,“Authentic AU”用于真品、未经改动但不能获得数字等级的卡,而 Authentic Altered 印在等级栏里。在 ACE,按它的量表,改动过的卡根本不封装:它“will be returned raw.”(会以裸卡退回。)161442
CGC 的 9.5 和 CGC 的 10 一样吗
取决于旁边的文字。CGC Trading Cards 或 CSG 的旧版“Gem Mint 9.5”在 CGC 更新后的量表下“exactly equivalent to Gem Mint 10”(与 Gem Mint 10 完全等同),CGC 的查询、数量报告和登记册都把它计为 10 分。现行的“Mint+ 9.5”是比 Gem Mint 10 低一档的等级。2354
PSA 什么时候改过标签
PSA 自己的文章注明了六次改动的日期:2008 年 2 月 12 日(等级数字位于等级文字下方)、2013 年 11 月 12 日(插入式标签背面的全息图,配新封装壳)、2017 年 6 月 14 日(LightHouse 标签,带易褪油墨、UV 标志图案和二维码)、2019 年 1 月 1 日(PSA/DNA 的封装也改用红标)、2024 年 5 月 14 日(新封装壳,从体育卡开始)和 2024 年 6 月 19 日(仅签名物品的蓝标)。我没有找到日期为 2023 年的 PSA 标签改版。171819202122
TAG、SGC 或 ACE 的证书编号有几位
SGC:“For black labels, enter all 7 digits. For green and white labels, enter all 11 characters (XXXXXXX-XXX).”(黑标请输入全部 7 位数字。绿标和白标请输入全部 11 个字符(XXXXXXX-XXX)。)TAG:“typically 1 Letter followed by 7 Numbers,”(通常是 1 个字母后跟 7 个数字),它的帮助中心说其编号“are a mix of numbers and letters which are generated randomly.”(是随机生成的数字与字母混合。)本文读到的 ACE 页面没有一个给出格式;它自己的记录上是六位和五位数字,后者前面补了零。1011651213
Beckett 的证书查询为什么无法使用
Beckett 日期为 2026 年 10 月 2 日的状态页说,它“detected suspicious technical activity and, out of caution, took our platforms offline,”(检测到可疑的技术活动,出于谨慎让平台下线),并说“Core certification, grade records, and historical population databases remain intact and uncompromised”(核心认证、等级记录和历史数量数据库完好无损,未遭入侵);查询在它恢复的第一阶段。存档快照显示,网站在 2026 年 9 月 19 日就已下线,而它的查询在 8 月 19 日还能用。293031
本站相关文章:卡牌居中度如何评判,以及如何自己测量是关于同样六家评级公司的姊妹篇:它们公布的居中度容差,以及 Kiradex 中测量这些容差的量规;宝可梦卡牌的稀有度标记与系列符号:英文版和日文版读的是卡牌自己最下面那一行,也就是标签上的系列和编号所概括的部分;为 iPhone Duo 准备您的应用是介绍 Kiradex 的那篇实操指南;而在 iPhone 上造一个像素艺术世界、像素艺术人物:iPhone 上的角色与捏人器和像素艺术建筑:iPhone 上的房屋、大厅与室内讲的是 Kiradex World,也就是收藏所在的那座像素小镇。
参考来源
-
Collectors Holdings (PSA),“PSA Guarantee”(财务保证),https://www.psacard.com/financialguarantee ,2026 年 10 月 5 日抓取,保存为作者本文证据文件夹中的
psa-guarantee.txt。开篇一段包含 PSA 的“assurance that we stand behind our opinions as to the authenticity and/or grade of each item we encapsulate, as reflected on each PSA label”(承诺对所封装的每件物品的真伪和/或等级所持的意见负责,以每张 PSA 标签上所反映的为准);还包含“active certification number on the cert lookup feature”(证书查询功能上的有效证书编号)这一条件、把遭篡改或伪造的封装壳和标签排除在外的规定“regardless of certification status”(无论其认证状态如何)、“unscrupulous people”(不法之徒)一段、“mechanical errors”(机械性错误)条款(标签日期“does not match the date printed on the Item”(与物品上印的日期不符);“specification, set, variation, or parallel”(规格、系列、版本或平行版)的标错),以及“Authentic”和“Authentic Altered”一段(保证“does not differentiate between”(不区分)两者,标为“Authentic”的物品“must be viewed as potentially interchangeable with “Authentic Altered””(必须视为可能与“Authentic Altered”互换))。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
本文读到的六家评级公司的查询:PSA,https://www.psacard.com/cert (本文保存的 23 个 PSA 页面中,除数量报告文件外的 22 个都链接到它;由
r1_psa_cert_links.py统计);Beckett,https://www.beckett.com/grading/card-lookup (2026 年 8 月 19 日的 Wayback Machine 快照);CGC,https://www.cgccards.com/certlookup/ ;SGC,https://www.gosgc.com/cert-code-lookup (2026 年 10 月 5 日渲染);TAG,https://taggrading.com/pages/cert-search ;ACE,https://acegrading.com/cert/ 。下文分别连同各自的页面引用。 ↩↩↩ -
Collectors Holdings (PSA),“Collecting Lingo”术语表,https://www.psacard.com/Resources/Lingo ,2026 年 10 月 5 日抓取(
psa-lingo-20261005.txt;与居中度一文所用的 10 月 4 日副本相同)。包含 OC 条目及其例子“would be designated Mint 9oc”(会被标为 Mint 9oc),以及 Certification Number 条目“PSA gives every graded card a certification number. It can be found on the PSA label”(PSA 给每张评级卡一个证书编号。可以在 PSA 标签上找到),后者没有说是哪一面。 ↩↩↩↩↩↩↩↩↩↩ -
CGC Cards,“Grading Scale”,https://www.cgccards.com/card-grading/grading-scale/ ,2026 年 10 月 5 日抓取(
cgc-grading-scale-20261005.txt;与 10 月 4 日副本相同)。包含 Pristine 10 标签部分(“flawless under 10-times magnification”,在 10 倍放大下毫无瑕疵)和等级说明(“virtually flawless card to the naked eye”,肉眼看来几乎毫无瑕疵的卡)、含 Mint+ 9.5 在内的二十个标准卡等级、标注 Authentic AU、Authentic Altered AA 和 Authentic ART,以及旧版等级对照(Legacy Grade Key)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
CGC Cards 帮助中心,“CGC Cards Merger”常见问题,https://www.cgccards.com/about/help-center-faqs/about-cgc-cards/cgc-cards-merger/ ,2026 年 10 月 5 日抓取(
cgc-faq-merger.txt)。第 210 行包含“the original CGC Trading Cards and CSG labels are no longer being offered”(原来的 CGC Trading Cards 和 CSG 标签已不再提供),以及这类卡“must be reholdered with the CGC Cards label”(必须换装 CGC Cards 标签);还包含“they will be considered Gem Mint 10s in Verify CGC Cards Certification, the CGC Cards Population Report and the CGC Cards Registry”(它们在 Verify CGC Cards Certification、CGC Cards Population Report 和 CGC Cards Registry 中都会被视为 Gem Mint 10)。 ↩↩↩↩↩↩↩↩↩↩ -
SGC,“Grading Scale”,https://gosgc.com/card-grading/scale ,由居中度一文的
render_sgc_tabs.py点开全部二十个标签页并保存(sgc-grade-tabs.txt,2026 年 10 月 5 日 05:22 UTC 渲染);渲染后的页面与 10 月 5 日的第二次渲染(sgc-scale-20261005.rendered.txt)比较无变化。包含等级名称“10 PRI”(Pristine)、“10 GM”(品质“GEM”)、9.5 MINT+、8.5 NM/MT+、品质为 NM/MT 的 8、7 NRMT 等。 ↩↩↩↩↩↩↩↩↩↩↩ -
TAG Grading,“Grading Scale”,https://taggrading.com/pages/scale ,2026 年 10 月 5 日抓取(
tag-scale-20261005.txt;与 10 月 4 日副本相同),并结合评分细则的分数区间(tag-rubric-extracted.txt,来自 https://taggrading.com/pages/rubric ,2026 年 10 月 4 日)。包含 990 到 1000 的 Pristine 10、950 到 989 的 Gem Mint 10,以及“Half points are included on every grade level except for between 9 and 10.”(除 9 和 10 之间外,每个等级都有半分。) ↩↩↩↩↩↩↩↩↩ -
Beckett Grading Services,“Grading Scale”,https://www.beckett.com/grading/scale ,读自 2026 年 5 月 3 日的 Wayback Machine 快照 https://web.archive.org/web/20260503161916/https://www.beckett.com/grading/scale ,由居中度一文保存(
bgs-grading-scale-wayback-20260503.txt)。包含作为最高两档的“Pristine 10”和“Gem Mint 9.5”,没有别的 10 分,一直到“Poor 1”。 ↩↩↩↩↩↩↩↩↩↩↩ -
Beckett,“Introducing BGS Black”(日期为 2014 年 11 月 28 日的新闻帖子),https://www.beckett.com/news/introducing-bgs-black/ ,读自 2022 年 8 月 16 日的 Wayback Machine 快照 https://web.archive.org/web/20220816001507/https://www.beckett.com/news/introducing-bgs-black/ (
bgs-news-introducing-black-wayback-20220816.txt)。包含“the elusive BGS Pristine 10”(难得一见的 BGS Pristine 10)、四个 10 的黑标、“for modern cards only”(仅适用于现代卡),以及“not valid for any BVG cards (1980 and older)”(不适用于任何 BVG 卡(1980 年及更早))。其评论串在已保存文本的第 451 行有一条署名“Mike”、日期为 2014 年 11 月 29 日的评论:“BGS 9.5’s and 10’s will always be Gold”(BGS 的 9.5 和 10 永远是金标),除非一张 10 分卡四项子分数都是 10,它称之为黑标。页面没有说明评论者的身份;同一个名字还署名了第 405 行和第 423 行的评论,前者回答了 BGS 重新贴标的问题,后者称赞了 BGS。已保存的 Beckett 页面没有一个提到银标。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
SGC,“Cert Code Lookup”,https://www.gosgc.com/cert-code-lookup ,2026 年 10 月 5 日 14:14 UTC 在无头 Chromium 中渲染(
sgc-cert-lookup.rendered.txt和.html;HTML 中有 reCAPTCHA 组件,表单未使用)。包含“For black labels, enter all 7 digits. For green and white labels, enter all 11 characters (XXXXXXX-XXX).”(黑标请输入全部 7 位数字。绿标和白标请输入全部 11 个字符(XXXXXXX-XXX)。)页脚:“SGC, LLC.” ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
TAG Grading,“TAGD”页面(标题为“YOUR CARDS ARE TAG’D”),https://taggrading.com/pages/tagd ,2026 年 10 月 5 日抓取(
tag-tagd.txt)。包含“locate the card’s CERT# (left of the QR code)”(找到卡上的 CERT#(二维码左侧))、“The CERT# format is typically 1 Letter followed by 7 Numbers”(CERT# 的格式通常是 1 个字母后跟 7 个数字),以及 Proof Mark 的步骤,其中有“Every Proof Mark is confirmed & scanned before leaving the TAG facility”(每个 Proof Mark 在离开 TAG 工厂前都经过确认和扫描)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
ACE Grading,证书记录 #242548,https://acegrading.com/cert/242548 ,2026 年 10 月 5 日抓取,正常返回(
ace-cert-242548.txt)。包含记录字段“Label”“Name”“Release Year”“Set”“Number”“Language”和“Variant”、等级“MINT 9”、四项子分数,以及按标签种类(Standard、Colour Match、Ace)的数量。记录上的卡名此处不予转载。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
ACE Grading,证书记录 #02289,https://acegrading.com/cert/02289 ,2026 年 10 月 5 日抓取,正常返回(
ace-cert-02289.txt)。包含一个前面补零的五位编号、等级“GEM MINT 10”、四项子分数,以及因为是宣传卡而以“Additional Information”代替“Variant”。 ↩↩↩↩↩↩↩↩ -
实测:
measure_slab_parser.py,输出measure_slab_parser.out.txt,位于作者本文的证据文件夹中。它是SlabLabel.init?(reading:)和Grader.verificationURL(cert:)(Kiradex 仓库的Kiradex/Scanner/SlabLabel.swift,第 54 到 102 行和第 41 到 49 行;本注释提到的每一行 Kiradex 代码,都在 2026 年 10 月 5 日 16:53 和 17:15 PDT、HEAD 为提交cf3beb1e时重读,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时重读,每一行都没有变化,而那天工作树一直在编辑)的逐行 Python 副本,先对照应用的测试检验:KiradexTests/ScannerTests.swift(第 243 到 277 行)和KiradexTests/ScanSessionTests.swift(第 196 到 201 行)合计读取标签八次,其中 TAG TEAM 这一读取在两个文件中都有(ScannerTests 第 276 行、ScanSessionTests 第 199 行),所以脚本运行七个不同的读取,全部通过。不在这次检验之内的:ScannerTests 第 250 行断言的查询地址,以及aGradedCardCarriesItsLabel的标签期望(ScanSessionTests 第 192 行),后者比较经扫描器读出的完整标签;输出的第 4d 节按简报的规则运行了它。脚本随后运行十六张合成标签,它们按每家评级公司公布的证书编号格式和等级措辞构造,并带有“CARD NAME”和“SET NAME”占位符。它的运行记录:2026 年 10 月 5 日,调研的首次运行;为草稿重新运行一次,与保存的输出相同(用cmp核对);以及若干次重新运行:由于ScanSessionTests.swift第 200 行只断言?.grader == .ace,对 ACE 期望只比较评级公司;给两张 SGC 标签换上 SGC 自己的等级名称(10 GM、NM/MT 8);加入第 4 节,即与第 1 到 3 节分开的、简报第 1 项和第 2 项的 Python 草案,连同其汇总规则和检查;加入第 4d 节,针对两个关于完整标签或汇总的现有期望;以及写出评级公司未列出的两字母代码的规则。2026 年 10 月 15 日,重新运行检验了简报后来的规则:连写代码和1ST EDITION一行,包括相机连成一行的情形;尾部格式错误、用别的破折号或空格读出、或被拆成两行返回的 SGC 代码;从六家评级公司已保存量表页面读取、且只在这些量表使用之处才计入的等级用词;以及合并连续观察的第 4e 节。脚本及其输出的每个早期版本都保存在旁边,自加入第 4 节起的每次运行都在一个临时副本上重复过,输出逐字节相同。在草案下:16 张标签 16 张正确,简报的 39 张检查标签全部如其所说,15 条汇总字符串 15 条正确,10 组连续观察 10 组按简报所说合并,移植检验的 7 个期望中有 6 个成立(第七个是第 200 行的改动),在第 4d 节中第 192 行的期望改变,而CopyTests.swift第 175 行成立。现有读取器对这十六张标签返回的结果在每次运行中都相同。Swift 没有执行;输入是键入的文本,不是相机读取;标签版式没有公布,所以行序是假设的。K4X93B27是 TAG“a mix of numbers and letters”(数字与字母混合)的一个自编实例。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
作者的算术:
arith.py,输出arith.out.txt,与本文草稿放在一起,2026 年 10 月 5 日运行,2026 年 10 月 15 日重新运行。从磁盘上的文件推导出文中的每个计数和比例,对读取器的运行使用一个明确声明的分母(十六张合成标签):完整 3 张(18.75%),评级公司、证书编号和等级正确的 9 张(56.25%),其中 6 张丢了改变含义的词,错误 7 张(43.75%:1 张丢等级,2 个证书编号被截短,4 个评级壳漏认,25%),以及照输出所列的按评级公司分项;它还断言输出自己的汇总行与之一致。从已保存的页面中,它统计 PSA 的六个修饰标记和九个无分数代码、PSA 的十二个等级描述、CGC 的二十个标准卡等级、TAG 的七条撤销原因(tag-decertified.html中的列表项),以及十对未变化的页面;并计算有日期事件之间的间隔(Beckett 8 月 19 日和 9 月 19 日两次快照之间 31 天;从 9 月 19 日到 10 月 2 日的通知 13 天)。它还按每个代码自己的文字给 PSA 的九个无分数代码分类(5 个可封装为“Authentic Altered”,2 个可封装为“Authentic”,1 个永远不能,1 个除非判定被推翻否则不能),从实测输出的第 4 节重新读取简报规则的计数(4a 与 4d 分开;39 张检查标签,第 1 项 16 张、第 2 项 23 张;15 条汇总字符串;4e 中 10 组连续观察检查),并且只在第 1 节统计移植检验。最后一次运行为 2026 年 10 月 15 日;在哈希种子 0、1 和 7 下输出相同。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Collectors Holdings (PSA),“PSA Grading Standards”,https://www.psacard.com/gradingstandards 。等级列表是一个轮播组件;其文字位于页面加载的一个消息包中,由居中度一文于 2026 年 10 月 4 日保存(
psa-grade-messages-1.json,一个从 psacard.com 提供的 Next.js 代码块),extract_psa_messages.py从中把修饰标记、无分数、“Authentic”和半分的文字输出到psa-qualifiers-extracted.txt(2026 年 10 月 5 日重新运行两次,每次按 SHA-256 都与重新运行前保存的副本逐字节相同)。等级描述(从 GEM-MT 到 PR,以及 PR-FR)是该包中的descriptor值。10 月 5 日抓取的普通页面(psa-gradingstandards-20261005.txt,与 10 月 4 日相比无变化)带有同样九个无分数代码 N1 到 N9,以及同样的封装条款。包含 AUTHENTIC(N0)条目及其原因、“real but nothing more”(是真的,但仅此而已),以及就 PSA Financial Grade Guarantee 而言,仅“Authentic”的标注“is to be considered interchangeable with “Authentic Altered””(应视为与“Authentic Altered”可互换)的说法(该包的authentic.description1和description2);带“space permitting”(在空间允许时)的 ALTERED AUTHENTIC(AA)条目;标题“If your card is returned without a numeric grade in a card saver sleeve”(如果您的卡装在 card saver 卡套里、没有数字等级地被退回);以及逐个代码的“can qualify for encapsulation as “Authentic Altered””(可以封装为“Authentic Altered”)(N1、N2、N3、N5、N7)、“as “Authentic””(封装为“Authentic”)(N6、N8)、“would never qualify”(永远不能)(N4),以及带“could be reversed upon resubmittal”(重新送评时可能被推翻)的“does not qualify”(不能)(N9)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
PSA,“UPDATE: New PSA Labels”,2008 年 2 月 12 日,https://www.psacard.com/articles/articleview/5242/update-new-psa-labels ,2026 年 10 月 5 日抓取(
psa-article-5242-new-labels.txt)。包含这次改动与半分制有关的原因、“the same general information”(相同的一般信息),以及等级数字位于“directly below the description of the grade (NM-MT) on the right side of the label”(标签右侧等级描述(NM-MT)的正下方)。 ↩↩↩↩↩↩↩↩↩ -
PSA,“PSA Introduces Safety and Security Improvements to Its Holders”,2013 年 11 月 12 日,https://www.psacard.com/Articles/ArticleView/7946/psa-introduces-safety-security-improvements-its-holders ,2026 年 10 月 5 日抓取(
psa-article-7946-holder-security.txt)。包含上半部分“envelops the bottom”(包住下半部分)的封装壳,以及插入式标签上取代“the simple, silver foil stamp”(简单的银色烫印)的“reflective hologram”(反光全息图)。 ↩↩↩↩↩ -
PSA,“PSA Labels Get New Look, New Technology”,2017 年 6 月 14 日,https://www.psacard.com/articles/articleview/9234/psa-labels-get-new-look-technology ,2026 年 10 月 5 日抓取(保存为
psa-label-2023-article.txt,这个文件名早于日期核查;文章本身的日期是 2017 年 6 月 14 日)。包含保留的红色边框、“fugitive ink”(易褪油墨)、升级为 Lighthouse 技术的正面全息图(“Gone are the days of standard holograms”,标准全息图的时代已经过去)、UV 标志图案、背面的二维码、对易褪油墨的解释,以及“other covert security features”(其他隐蔽的防伪特征)。 ↩↩↩↩↩↩↩↩↩ -
Terry Melia,PSA,“PSA News Update: PSA Moves to Red Labels Across the Board”,2019 年 2 月 15 日,https://www.psacard.com/articles/articleview/9801/psa-news-update-moves-red-labels-across-board ,2026 年 10 月 5 日抓取(
psa-red-labels.txt)。包含在“20 years of using blue labels”(使用蓝标 20 年)之后、自 2019 年 1 月 1 日起生效的改动,“generic description of the item (i.e., TRADING CARD)”(物品的通用描述(即 TRADING CARD)),以及“trading card”的判断方法。 ↩↩↩↩↩↩↩↩↩ -
PSA,“Meet The New Standard”,2024 年 5 月 14 日,https://www.psacard.com/articles/articleview/11060/meet-the-new-standard ,2026 年 10 月 5 日抓取(
psa-article-11060-new-holder.txt)。包含“Starting with sports card submissions this May with plans for a wider rollout”(从今年 5 月的体育卡送评开始,并计划更大范围推广)(第 61 行)、新聚合物、“20% heavier”(重 20%)和“no Mylar, no sleeve”(没有 Mylar,没有卡套);文章没有描述标签改动。 ↩↩↩↩↩↩ -
PSA,“New Blue PSA Label for Autograph-Only Authentication”,2024 年 6 月 5 日,https://www.psacard.com/articles/articleview/11062/new-blue-psa-label-for-autograph-only-authentication ,2026 年 10 月 5 日抓取(
psa-article-11062-blue-label.txt)。包含“Beginning June 19”(自 6 月 19 日起)以及红标和蓝标的定义。 ↩↩↩↩↩↩↩↩↩↩↩ -
Certified Collectibles Group,“CGC Trading Cards and CSG Will Combine to Become the World’s Second-largest Card Grading Service”,2023 年 6 月 20 日,https://www.cgccomics.com/news/article/11754/cgc-cards-merger/ (已保存页面的规范地址在 cgcgrading.com 上),2026 年 10 月 5 日抓取(
cgc-merger-2023.txt)。包含“In July”(7 月)、“sleek new label”(简洁新标签)、标签提供的内容、金色 Pristine 10 标签、Gem Mint 9.5“exactly equivalent to Gem Mint 10”(与 Gem Mint 10 完全等同)、Perfect 10 和子分数的终止,以及换壳安排,根据它“any cards with a grade of Gem Mint 9.5 will receive the CGC Cards Gem Mint 10 grade”(任何等级为 Gem Mint 9.5 的卡都会得到 CGC Cards Gem Mint 10 的等级)(第 75 行)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Collectors Holdings (PSA),“PSA Security”,https://www.psacard.com/security ,2026 年 10 月 5 日抓取(
psa-security.txt)。包含 LightHouse 标签正面和背面的特征、“In 2017, PSA enhanced the security features found on the label used inside the PSA holder”(2017 年,PSA 增强了 PSA 封装壳内所用标签的防伪特征),以及指向 psacard.com/cert 的链接。 ↩↩↩↩↩↩↩↩↩↩↩↩ -
CGC Cards,“Holder and Label”,https://www.cgccards.com/card-grading/holder-label/ ,2026 年 10 月 5 日抓取(
cgc-holder-label.txt)。包含“microprinting, UV ink, holographic foil and a unique certification number and barcode”(微缩印刷、UV 油墨、全息箔以及唯一的证书编号和条形码)、“resists impacts and tampering”(耐冲击、防篡改)的“ultrasonically-welded”(超声波焊接)外壳,以及标签背面的二维码;它没有说证书编号在哪一面。 ↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Beckett Grading Services,“Grading FAQ”,https://www.beckett.com/grading/faq ,读自 2025 年 3 月 26 日的 Wayback Machine 快照 https://web.archive.org/web/20250326181354/https://www.beckett.com/grading/faq ,由居中度一文保存(
bgs-faq-wayback-20250326.txt)。包含标签描述、“the 4 sub grades on the front label of the card holder”(卡壳正面标签上的 4 项子分数)、印刷错误异议规则、一句话的防伪说明,以及数量报告那一段。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
2026 年 10 月 5 日渲染并为查找标签字段和防伪特征而阅读的 SGC 页面,均未找到:评级量表(
sgc-scale-20261005.rendered.txt)、TCG 服务(sgc-tcg-services.rendered.txt)、卡牌评级(sgc-card-grading.rendered.txt)、应用页面(sgc-app.rendered.txt)、收藏者支持(sgc-collector-support.rendered.txt)和数量报告(sgc-pop-report.rendered.txt)。 ↩↩↩↩↩ -
ACE Grading,“Authentication”,https://acegrading.com/auth ,2026 年 10 月 5 日抓取(
ace-auth.txt)。包含“Please check the URL in your browser”(请检查浏览器中的网址)、“https://acegrading.com”和“When scanning our authentication labels”(在扫描我们的认证标签时)。它点出了扫描标签后应打开的地址;没有说标签上印着这个地址。 ↩↩↩↩↩↩↩↩↩ -
Beckett,“Tech Updates”,日期为 2026 年 10 月 2 日,https://maintenance.beckett.com/techupdates ,2026 年 10 月 5 日抓取(
bgs-techupdates-20261005.txt;与 10 月 4 日副本相比无变化)。包含“suspicious technical activity”(可疑的技术活动)那句话、“The extended downtime”(停机时间延长)、完好的认证和数量记录,以及三个阶段,第一阶段为“Customer Accounts, Online Submission Center, Certificate Look-up and Pop Reports”(客户账户、在线送评中心、证书查询和数量报告)。 ↩↩↩↩↩↩↩↩↩↩↩↩ -
Beckett 维护页面,https://maintenance.beckett.com/ ,读自 2026 年 9 月 19 日的 Wayback Machine 快照 https://web.archive.org/web/20260919125301/https://maintenance.beckett.com/ ,由于存档对第一个抓取工具限速,改用 curl 抓取,并由
html2txt.py转换(bgs-maintenance-wayback-20260919.txt)。包含“Beckett’s digital platforms, including Beckett.com and the Beckett mobile app, remain temporarily offline while we complete infrastructure enhancements”(Beckett 的数字平台,包括 Beckett.com 和 Beckett 移动应用,在我们完成基础设施升级期间暂时保持下线),并在“Which grading services are currently available?”(目前提供哪些评级服务?)下写有“Base (with subgrades), Standard, and Express are currently available through the temporary submission form”(目前可通过临时送评表单提交 Base(含子分数)、Standard 和 Express),以及“Availability may change”(可用性可能变化)。它没有说 Standard 和 Express 的标签是否带子分数。 ↩↩↩↩↩↩↩ -
Beckett,“Beckett Graded Card Lookup - BGS | BVG | BCCG”,https://www.beckett.com/grading/card-lookup ,读自 2026 年 8 月 19 日的 Wayback Machine 快照 https://web.archive.org/web/20260819092524/https://www.beckett.com/grading/card-lookup (
bgs-card-lookup-wayback-20260819.txt和.html,其表单字段为item_type和item_id)。包含“Verify the validity of Beckett certificates by entering the cert number”(输入证书编号核验 Beckett 证书的有效性)、BGS、BVG 和 BCCG 的选项,以及请卖家从拍卖广告链接过来的邀请。 ↩↩↩↩↩↩↩↩↩↩↩ -
Kiradex,
Kiradex/Scanner/SlabLabel.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 4 到 21 行(六家评级公司及其名称)、第 23 到 33 行(标识)、第 35 到 39 行(isAlsoCardText,对整个 TAG 和整个 ACE 为真,连同其注释)、第 41 到 49 行(verificationURL(cert:),只有 PSA 和 CGC)、第 54 到 102 行(SlabLabel和init?(reading:))、第 60 到 61 行(等级用词)、第 73 行(文字在任何非字母、非数字、非句点处切开后再折叠)、第 75 到 79 行(证书编号模式)、第 81 到 84 行(第一个带标识的评级公司胜出,TAG 或 ACE 只在certNumber != nil时才算)、第 87 到 101 行(等级;第 95 行是它的模式,数字后不接受字母、数字、句点或斜杠,第 101 行取带文字的最高数字,相同时保留第一个;第 54 到 102 行于 2026 年 10 月 15 日按5a344e3f提交时的状态,从仓库存储的对象中重读,没有运行任何 git 命令)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Kiradex,
Kiradex/Models/CardCopy.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 64 行(CopyDetails.notes)、第 69 到 73 行(CopyDetails.init(label:),复制评级公司、等级和证书编号)、第 75 到 86 行(CopyDetails的逐成员初始化方法)、第 91 到 106 行(CopyDetails.summary,“PSA 10”;第 95 行构造评级公司名称加编号,或只有名称)、第 110 到 113 行(gradeText)、第 133 到 138 行(graderRaw、grade“1 to 10 in halves; 0 when there is none”(1 到 10,以 0.5 为步长;没有时为 0)、certNumber和notes)、第 153 到 175 行(CardCopy.details:第 154 到 164 行的 getter 通过逐成员初始化方法用存储字段构建CopyDetails,第 165 到 174 行的 setter 把它们写回)、第 189 到 194 行(isRegistered,只看一张卡的副本)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Kiradex,
Kiradex/Views/Card/CopyEditor.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 9 行(@Binding var details)、第 16 到 17 行(grades,10 到 1,以 0.5 为步长)、第 41 到 45 行(绑定到details.grader的Grader选择器)、第 46 到 51 行(Grade选择器和“Not noted”)、第 52 到 54 行(证书编号字段,第 53 行为.keyboardType(.numberPad),第 54 行为标识符copy-certificate)、第 55 到 59 行(“Look Up at”按钮,只在记录了编号且有链接时显示,调用openURL)、第 70 到 74 行(页脚,其中关于评级副本的那句在第 73 行)、第 86 到 87 行(Notes 字段,没有无障碍标识符)、第 117 到 122 行(CenteringNote.text(for:),居中度页脚的文字)、第 124 到 195 行(CopiesSection)、第 156 和 166 行(每份副本的那一行显示copy.details.summary,其标识符为copy-后接该汇总)、第 158 到 161 行(那一行的“Cert”和编号)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Collectors Holdings (PSA),“FAQ”,https://www.psacard.com/support/faq ,2026 年 10 月 5 日抓取(
psa-faq.txt)。包含防篡改的定义和“Since 1991”(自 1991 年起)、为卡拍照并上传“to its online Certification Verification site”(到其在线证书核验网站)、免费的标签更正、应用中用“the unique number found on your PSA-graded label”(您的 PSA 评级标签上的唯一编号)进行的文字搜索、带有“a unique, six-digit, alphanumeric certification number”(唯一的六位字母数字证书编号)的 PSA/DNA 签名贴纸(第 223 行),以及“No Grade”条目:因 N1 到 N5 或 N7 被拒的物品“will be returned not encapsulated”(会不经封装退回),N6、N8 或 N9 的物品“will not be charged grading”(不收评级费)。 ↩↩↩↩↩↩↩↩↩↩ -
CGC Trading Cards,“CGC Trading Cards Holder”,2020 年 7 月 13 日,https://www.cgccards.com/news/article/8436/cgc-trading-cards-holder/ (规范地址在 cgcgrading.com 上),2026 年 10 月 5 日抓取(
cgc-tc-holder-2020.txt)。包含“If requested”(如有要求)提供的子分数、“On the back of the label, a unique certification number identifies a card”(在标签背面,唯一的证书编号标识一张卡)(唯一说明编号在哪一面的已保存 CGC 页面),以及指向“CGCcards.com/verify”的二维码。 ↩↩↩↩↩↩↩↩↩↩↩ -
TAG Grading 帮助中心,“What Are The Steps of TAG’s Grading Process?”,https://help.taggrading.com/en/articles/10091666-what-are-the-steps-of-tag-s-grading-process ,2026 年 10 月 5 日抓取(
tag-help-process.txt)。包含购买与送评一步的“Unique ID numbers are assigned to both the cards and the order in this step”(在这一步,卡牌和订单都会被分配唯一的 ID 编号)(它没有说这个 ID 就是证书编号);“UV-cured text inside the slab”(评级壳内部经 UV 固化的文字)及其二维码;以及生成“overall scores for the card on a 1-10 and 1000-point TAG Score scale”(卡牌在 1 到 10 和 1000 分 TAG Score 量表上的总分)的图像处理阶段。 ↩↩↩↩ -
Collectors Holdings (PSA),通讯页面,https://www.psacard.com/communication ,2026 年 10 月 5 日抓取(
psa-communication.txt)。包含评级流程步骤(订单 ID 贴纸、研究、打印 LightHouse 标签、超声波密封),以及一条没有日期的条目,说证书核验页面和 PSA 应用“allow customers to scan the barcode on their item and verify its authenticity”(可以让客户扫描物品上的条形码并核验其真伪)。 ↩↩↩↩↩ -
TAG Grading,“Decertified”,https://taggrading.com/pages/decertified ,2026 年 10 月 5 日抓取(
tag-decertified.txt和.html)。包含“This TAG Certification number is no longer active.”(此 TAG 证书编号已失效。)以及一个七条原因的列表。本文的调研笔记数的是六条;已保存页面的列表有七项,其中有“Ownership disputed or flagged as stolen”(所有权存在争议或被标记为被盗),本文以页面为准。 ↩↩↩ -
ACE Grading,首页,https://acegrading.com/ ,2026 年 10 月 5 日抓取(
ace-home.txt)。包含 Standard、Colour Match 和 Ace 标签,“Ace Labels are hand drawn exquisite addons for cards, which enhance the overall appearance of a collectible”(Ace 标签是为卡牌手绘的精美附加装饰,能提升收藏品的整体观感),以及菜单项“Lookup an Ace Grading graded collectible by certification number”(按证书编号查询 Ace Grading 评级过的收藏品)。 ↩↩↩↩ -
TAG Grading,“Cert Search”,https://taggrading.com/pages/cert-search ,2026 年 10 月 5 日抓取(
tag-cert-search.txt和.html)。包含“Enter any card’s 8 digit CERT #”(输入任意卡的 8 位 CERT #),以及页面自身脚本中的const TAG = "https://my.taggrading.com/card/";。没有抓取任何记录。 ↩↩↩↩↩↩↩↩ -
ACE Grading,“Grading Scale”,https://acegrading.com/grading-scale ,2026 年 10 月 4 日由居中度一文抓取(
ace-grading-scale.txt),10 月 5 日再次抓取(ace-grading-scale-20261005.txt,无变化)。包含从“10 - GEM MINT”到“1 - POOR”的整数等级;修饰标记 MC 和 OC,其中 Off-Center 修饰“appending OC to the grade”(在等级后加上 OC),以及“can not fit in the Ace slab”(放不进 Ace 评级壳)的切割偏差卡被“sent back raw”(以裸卡退回);还有 Altered、Counterfeit 和 Questionable Authenticity 三种结果,都是“will not be encapsulated and will be returned raw”(不会被封装,会以裸卡退回)。 ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
2026 年 10 月 5 日未找到或无法访问的内容,据本文的调研笔记:PSA 标签的字段清单(这些字段是从 PSA 的保证、2008 年的文章和一个 CardFacts 标题推断出来的);PSA 的系列命名规则;PSA 卡牌标签的证书编号格式(PSA 的常见问题只给出了 PSA/DNA 签名贴纸的格式),或者 Beckett、CGC 或 ACE 的格式;Beckett 的证书编号长度、黑色以外的标签颜色(除其黑标帖子下 2014 年的一条评论外)以及当前版式;SGC 的标签字段和防伪特征;ACE 地址核对之外的标签防伪;任何日期为 2023 年的 PSA 标签改动;以及 PSA 对 2008 年 2 月 12 日之前标签的任何日期。 ↩↩↩
-
图表:由
make_figures.py(配合svgkit.py)绘制,即与本文草稿放在一起的绘图脚本,2026 年 10 月 5 日。字段示意图在绘制前把每个字段的来源与已保存评级公司页面的原文片段核对,缺一个就停止;读取器网格和证书编号形状网格从measure_slab_parser.out.txt解析而来;时间线把每个日期与评级公司页面的原文片段核对,其注释把 PSA 2019 年 1 月 1 日的改动记为见于 2019 年 2 月 15 日的文章,即那篇文章所带的日期,而不是公告日期。没有使用任何标志、标签图样、评级壳照片、卡牌图片或真实卡名;每张标签都是通用方框和占位文字。 ↩↩↩↩↩↩ -
本文的调研笔记,2026 年 10 月 5 日整理:当天(UTC)抓取并保存为 HTML 和文本的每个页面,或在页面以脚本生成文字时(SGC)用无头 Chromium 渲染的页面;沿用并保留 10 月 4 日日期的居中度一文已保存页面;引用前根据每个页面的页脚或法律文字核对的发布方身份(PSA“© 2026 Collectors Holdings, Inc.”;CGC“Certified Guaranty Company, LLC”和“CGC is part of the Certified Collectibles Group”;SGC“SGC, LLC”;TAG“Technical Authentication & Grading, LLC”;ACE“Ace Grading ® Ltd”,在英格兰和威尔士注册);以及抓取时记录的每个请求的 HTTP 状态,包括 10 月 5 日 beckett.com 评级页面到 maintenance.beckett.com 的重定向(302)(居中度一文在 10 月 4 日把同样的重定向保存为
bgs-live-maintenance.txt)。 ↩↩↩↩ -
只作线索、本文任何事实都不以其为依据的来源:搜索返回的、名字和评级公司相似的收藏工具和卖家网站(其中有 cardgrade.io、pregradecards.com、figoca.com、blacklabelgrading.com、banktcg.com 和 allvintagecards.com),关于 Beckett 金标和银标的二手描述(https://allvintagecards.com/beckett-card-grading-guide/ )和关于 SGC 封装壳与标签的二手描述(https://hobbycardindex.com/guides/sgc-grading-guide/ ),以及一位收藏者对 PSA“label styles”(标签样式)的编号(https://www.banktcg.com/tools/psa-label-museum ),均于 2026 年 10 月 5 日看到。 ↩↩↩↩↩
-
PSA 的证书和数量页面,2026 年 10 月 5 日请求:https://www.psacard.com/cert 、https://www.psacard.com/cert/92176757/psa (一个在搜索结果中见到的形式的地址,那里的标题是“Cert Verification”加上编号)和 https://www.psacard.com/pop ,据调研笔记记录,都返回了 HTTP 403 和 Cloudflare 质询页面;没有采取任何手段绕过,这些页面都没有访问到。文件夹中没有保留任何这些质询响应的副本。以数量报告名字保存的那一个文件
psa-pop.html(21,219 字节)既不是报告也不是质询页面:从它自身的内容看,它是 PSA 的登录页面。它的路由状态带有路由signin?b=psa&r=,后面跟着经过两次 URL 编码的 https://www.psacard.com/pop ;它加载页面脚本app/(auth)/signin/page-3fb4febd59cd3148.js和一个SignInLayout;它没有标题,也没有可见文字;它是唯一没有链接到 /cert 的已保存 PSA 页面。把r参数理解为登录后要返回的地址,是作者的理解。在调研笔记记录的那一刻,/pop 是返回了 403 还是重定向到了登录页,从文件夹中无法判断;无论哪种,报告都没有读到。 ↩↩↩↩↩↩↩↩↩↩↩ -
CGC Cards 的查询,2026 年 10 月 5 日请求:https://www.cgccards.com/certlookup/ 和 https://www.cgccards.com/certlookup/3732635008/ (一个在搜索索引中见到的形式的地址,标题为“Verify Trading Card Certification”),据调研笔记记录,返回了 HTTP 403 和 Cloudflare 质询;没有访问到。十位数字的例子和地址的形式来自一个搜索索引标题。 ↩↩↩↩↩↩↩↩↩↩
-
ACE Grading 的查询索引和数量报告,2026 年 10 月 5 日请求:https://acegrading.com/cert 和 https://acegrading.com/pop ,据调研笔记记录,返回了 HTTP 403 和 Cloudflare 质询;没有访问到。两个记录页面正常返回,已经保存。 ↩↩↩↩↩
-
PSA CardFacts,“1999 Nintendo Pokemon Game”第 74 号卡(1st Edition)的页面,https://www.psacard.com/cardfacts/non-sports-cards/1999-nintendo-pokemon-game/item-finder-1st-edition-74/605468 ,2026 年 10 月 5 日抓取(
psa-cardfacts-item-finder.txt)。包含系列标题“1999 Nintendo Pokemon Game”,一个以“1999 POKEMON GAME 74”开头、接着是卡名和 1ST EDITION 的大写标题(页面没有称之为标签文字),以及一张成交记录表,其 Cert 列把每个评级壳的编号链接为/cert/<n>(由r1_psa_cert_links.py统计;没有使用页面上的任何价格或成交)。 ↩↩↩↩↩↩↩↩↩↩↩ -
PSA CardFacts,“2011 Nintendo Pokemon Japanese Black & White Psycho Drive”,https://www.psacard.com/cardfacts/non-sports-cards/2011-nintendo-pokemon-japanese-black-white-psycho-drive/32712 ,2026 年 10 月 5 日抓取(
psa-cardfacts-jp-psycho-drive.txt)。 ↩↩↩ -
PSA Price Guide,“2020 Pokémon Japanese S Promo”,https://www.psacard.com/priceguide/non-sports-tcg-card-values/2020-poke-mon-japanese-s-promo/3370 ,2026 年 10 月 5 日抓取(
psa-priceguide-jp-s-promo.txt)。只为系列名称而读;没有使用其中的任何价格。 ↩↩↩ -
Kiradex,
Kiradex/Scanner/CardIndex.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 291 到 297 行(fold,只保留字母和数字,所以句点被去掉)、第 394 行(match(_:))、第 415 到 432 行(其中,当按编号读出的卡中恰好有一张也读出了卡名时,匹配是确定的)、第 559 到 595 行(系列按其符号、按其英文名称“as a grading label gives it”(照评级标签给出的样子)或日文图鉴的日文名称,以及按印出的最近年份计分)、第 625 到 629 行(不带系列总数的编号,“a grading label’s “#4””(评级标签上的“#4”))、第 677 到 681 行(#编号的模式)。 ↩↩↩↩↩↩↩↩↩ -
实测:
r1_psa_cert_links.py,输出r1_psa_cert_links.out.txt,位于作者本文的证据文件夹中,2026 年 10 月 5 日运行,并由arith.py(第 9 节)重新推导。它读取每一个已保存的 PSA 页面(psa-*.html,23 个文件),统计指向 psacard.com/cert路径的链接。CardFacts 单品页面(psa-cardfacts-item-finder.html)有 231 个/cert/<n>形式的链接,涉及 201 个不同的编号,全部八位数字,没有一个是/cert/<n>/psa形式;23 个页面中有 22 个链接到查询页面本身,psa-pop.html什么都不链接。这是对已保存页面上链接的计数,不是 PSA 公布的证书编号格式。没有抓取任何页面,也没有使用 CardFacts 页面上的任何价格或成交。 ↩↩↩↩↩↩↩↩ -
Collectors Holdings (PSA),“PSA Public API Documentation”,https://www.psacard.com/publicapi/documentation ,2026 年 10 月 5 日抓取(
psa-publicapi-docs.txt)。包含只支持单个证书搜索、基于登录的访问令牌、示例编号00000000,以及对“non-numeric or too few characters”(含有非数字字符或字符太少)返回的“Invalid CertNo”。 ↩↩↩↩↩↩ -
Joe Orlando,“Market Report: Population Perspective”,PSA,已保存副本上没有日期,https://www.psacard.com/articles/articleview/3631/market-report-population-perspective ,2026 年 10 月 5 日抓取(
psa-article-3631-pop.txt)。包含数量报告统计什么、不统计什么。 ↩↩↩↩ -
Beckett,维护站点,https://maintenance.beckett.com/ ,即 2026 年 10 月 4 日代替被重定向的 beckett.com 评级页面提供的那个页面,由居中度一文保存(
bgs-live-maintenance.txt,标题为“Express Submissions Remain Open”)。在“Which grading services are currently available?”(目前提供哪些评级服务?)(第 33 行)下写有“Express is currently available through the temporary submission form”(目前可通过临时送评表单提交的是 Express)(第 35 行),在“Why are Base and Standard temporarily unavailable?”(为什么 Base 和 Standard 暂时不可用?)(第 38 行)下写有“Base and Standard card grading submissions are temporarily paused”(Base 和 Standard 卡牌评级送评暂停)(第 40 行)。它没有说 Express 的标签是否带子分数。 ↩↩ -
Kiradex,
KiradexTests/ScannerTests.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 241 到 285 行(第 243 行的aPSALabelGivesGraderGradeAndCertificate,它在第 245 行的读取以“1999 POKEMON GAME”开头,然后是“1ST EDITION”,再是“#4”,之后才是“GEM MT”(2026 年 10 月 15 日按5a344e3f提交时的状态,从仓库存储的对象中重读,没有运行任何 git 命令),第 250 行断言查询地址;Beckett 和 CGC 标签测试;裸卡测试,第 276 行有 TAG TEAM;以及 PSA 标签不带系列总数的编号,和“The name, the number and the year together put Base Set first.”(卡名、编号和年份放在一起,让 Base Set 排在第一。))。本文没有运行。 ↩↩↩↩↩↩↩↩ -
Certified Collectibles Group,“Guarantee”,https://www.cgcgrading.com/legal/guarantee/ ,2026 年 10 月 5 日抓取(
cgc-guarantee.txt)。包含收藏品“has not been overgraded”(没有被评高)的条款及其例外“Grade is NOT guaranteed for cards encapsulated with CGC’s green Qualified Grade Label”(以 CGC 绿色 Qualified Grade Label 封装的卡,等级不受保证),以及其他除外情形,其中包括签名的等级。 ↩↩↩↩ -
CGC Cards,“Population Report”,https://www.cgccards.com/population-report/ ,2026 年 10 月 5 日抓取(
cgc-pop.txt)。包含“by game, era and set”(按游戏、年代和系列)的组织方式和免责声明“not an indicator of value or rarity”(并不代表价值或稀有度)。 ↩↩↩↩↩ -
CGC Cards 帮助中心,“CGC Cards Pop Report”常见问题,https://www.cgccards.com/about/help-center-faqs/cgc-cards-website/cgc-cards-pop-report/ ,2026 年 10 月 5 日抓取(
cgc-faq-pop.txt)。包含从核验工具到数量报告的路径。 ↩ -
SGC,“SGC Grading App”,https://gosgc.com/sgc-grading-app ,2026 年 10 月 5 日 14:15 UTC 渲染(
sgc-app.rendered.txt)。包含 Cert Verification 功能及其“high-resolution images”(高分辨率图片)。 ↩↩ -
SGC,“Pop Report”,https://gosgc.com/pop-report ,2026 年 10 月 5 日 14:15 UTC 渲染(
sgc-pop-report.rendered.txt)。包含“With over 28 years of data included in the SGC Pop Report, inconsistencies may be present.”(SGC Pop Report 收录了 28 年以上的数据,可能存在不一致之处。) ↩↩↩ -
TAG Grading,首页,https://taggrading.com/ ,2026 年 10 月 5 日抓取(
tag-home.txt)。包含“Say goodbye to distracting paper flips”(告别碍眼的纸标签)、“permanently inscribed directly inside the slab”(直接永久地刻在评级壳内部)的等级、“Slabs graded with DIG Report Plus receive a precise 1000 pt TAG Score”(以 DIG Report Plus 评级的评级壳会得到精确的 1000 分 TAG Score)、“scores on a precise 1000 point scale & translates into an industry standard 1-10 Grade”(在精确的 1000 分量表上打分,并换算为行业标准的 1 到 10 等级)的评级系统,以及 DIG Reports 下的“Standard DIGs focus on the core defects that impacted the grade, aka the “DINGS.” DIG Plus Reports breakdown the card into further detail with precise 3 digit scoring.”(标准 DIG 关注影响等级的核心缺陷,也就是“DINGS”。DIG Plus 报告以精确的三位数评分对卡牌做更细致的拆解。) ↩↩↩↩↩↩ -
TAG Grading 帮助中心,“Are sequential TAG Grading certification numbers available?”,https://help.taggrading.com/en/articles/10566747-are-sequential-tag-grading-certification-numbers-available ,2026 年 10 月 5 日抓取(
tag-help-sequential.txt)。包含“All TAG Grading certification numbers are a mix of numbers and letters which are generated randomly.”(所有 TAG Grading 证书编号都是随机生成的数字与字母混合。) ↩↩↩↩↩↩ -
TAG Grading,“DIG”页面,https://taggrading.com/pages/dig ,2026 年 10 月 5 日抓取(
tag-dig-20261005.txt;与 10 月 4 日副本相同)。包含排行榜名次“is only available to cards which have been graded via the TAG S service as a 3 digit score is needed”(只提供给通过 TAG S 服务评级的卡,因为需要三位数分数)。 ↩↩ -
TAG Grading 数量报告,https://my.taggrading.com/pop-report/Pok%C3%A9mon ,由 2026 年 10 月 5 日保存的 taggrading.com 页面(例如
tag-cert-search.html)链接;没有抓取。 ↩ -
实测:
measure_page_drift.py,输出measure_page_drift.out.txt,位于作者本文的证据文件夹中;2026 年 10 月 5 日运行,为草稿重新运行,输出相同。它按非空文本行,把 10 月 4 日保存的十个评级公司页面与 10 月 5 日保存的副本比较:PSA 的评级标准(普通抓取)和术语表、CGC 的评级量表和“other grading topics”常见问题、TAG 的评分细则、量表和 DIG 页面、ACE 的评级量表、SGC 渲染后的量表以及 Beckett 的状态页;十个全部“unchanged”(未变化)。PSA 各等级的脚本包没有重新渲染,居中度一文保存的其他页面(其中有 PSA 的居中度指南、CGC 的常见问题和 TAG 的术语表)没有比较。 ↩↩↩↩↩ -
Blake Crosley,“How Card Centering Is Judged, and How to Measure It”,blakecrosley.com,2026 年 10 月 5 日,https://blakecrosley.com/blog/how-card-centering-is-judged ,2026 年 10 月 5 日阅读。它的常见问题从 10 月 2 日的通知算起 Beckett 的停机(“Beckett’s site has been offline since a notice dated October 2, 2026”,Beckett 的网站自 2026 年 10 月 2 日的通知以来一直下线),它的 TAG 一节说 TAG“scores out of 1,000”(以 1,000 分为满分打分),它的简报把评级公司的容差作为打包数据保存,附有来源和读取日期。它的简报还从扫描面板中去掉“Allows up to a”和“ceiling”,改为对 9 分说“Inside PSA’s and SGC’s published front figure for a 9”(在 PSA 和 SGC 公布的 9 分正面数值之内),对 10 分说“within PSA’s published 55/45 front figure for a 10”(在 PSA 公布的 10 分正面数值 55/45 之内),并加入一项检查,它“searches the app’s Swift sources for the same four phrases in string literals”(在应用 Swift 源码的字符串字面量中搜索同样四个短语)(已发布文件的第 495、498 和 505 行,2026 年 10 月 15 日重读)。它引用的 TAG 页面是评分细则、量表和 DIG 页面。本文没有编辑它。 ↩↩↩↩↩↩
-
Kiradex,
Kiradex/Scanner/CardReader.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 10 到 15 行(每种图鉴的识别语言)和第 28 到 45 行(VNRecognizeTextRequest、.accurate、识别语言、关闭语言校正及其注释,以及每一行的文字、高度和位置)。 ↩ -
Kiradex,
Kiradex/Scanner/ScanSession.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 42 到 45 行(looksForALabel = 2和“A label is small print, and often read a look late”(标签字小,常常要晚一次才读到))和第 133 到 136 行(后续读取合并进标签,在第 135 行)。 ↩↩↩↩ -
Kiradex,
Kiradex/Scanner/Sighting.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 37 行(整个读取结果交给SlabLabel(reading:))、第 100 行(后一次观察合并进标签)和第 131 到 143 行(merged(with:),第 134 到 142 行,用评级公司、等级和证书编号重建标签:较晚的等级、较长的证书编号,并且只在评级公司相同时)。 ↩↩↩↩ -
Kiradex,
docs/cloudkit-schema.ckdb,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 8、12 和 13 行(CD_certNumber、CD_grade、CD_graderRaw)。 ↩↩ -
Kiradex,
Kiradex/Views/Scan/ScanView.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 76 到 83 行(快速模式在looksForALabel次观察后登记一张裸卡)、第 286 行(面板的have调用register(found.card, details: $0, …))、第 299 到 300 行(重复检查及其警告提示条,“is already registered”)和第 304 行(register用传给它的 details 添加一份副本)。 ↩↩↩↩ -
Kiradex,
Kiradex/Views/Scan/ScanResultPanel.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 24 行(面板自己的details,一个@State)、第 52 到 57 行(没有标签时,副本得到品相和居中度)、第 79 到 83 行(scan-have,其动作是第 80 行的have(details))、第 96 到 98 行(详情面板:第 97 行为CopyEditor(card: card, details: $details),所以编辑器编辑的是面板自己的 details)、第 168 到 172 行(标题设为大写,第 171 行为.textCase(.uppercase),第 172 行为标识符scan-found-details)、第 174 到 180 行(读数行,第 179 行为标识符scan-found-readings)、第 196 到 203 行(标题:汇总,然后是“Cert”和编号,在第 200 行)、第 205 到 214 行(readings:对任何带评级公司的副本为 nil,在第 207 行,第 209 到 210 行的注释为“a case hides the card’s edges”(外壳挡住了卡的边缘);对裸卡,则是居中度及其所允许的内容)。 ↩↩↩↩↩↩↩↩ -
Kiradex,
KiradexUITests/KiradexUITests.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令);该文件当天最后一次修改是在 10:32:第 783 到 820 行(testScanningACardRegistersIt,一张裸卡,它在第 798 到 800 行对scan-found-readings的期望要求其包含“up to a 10”和“not judged”)、第 822 到 858 行(testScanningAGradedCardKeepsItsLabel,其注释在第 822 到 823 行;第 825 行以-fixtureCatalog、-scanFixture kira1-2和-scanSlab YES启动;第 833 行断言“PSA 10”(不区分大小写),第 834 行断言“49392218”,第 835 行断言没有读数行;第 839 到 842 行打开详情(scan-details)并读取copy-certificate字段;第 844 行点按Done,第 846 行点按scan-have,登记这份副本;第 854 行以copy-PSA 10查找副本那一行,第 856 行断言该行的标签包含“49392218”);在这一切之前,第 826 行点按Scan,第 828 到 832 行最多等待 20 秒等scan-found-name、最多 10 秒等scan-found-details(第 825 到 832 行于 2026 年 10 月 15 日按5a344e3f提交时的状态,从仓库存储的对象中重读,没有运行任何 git 命令)。本文没有运行。 ↩↩↩↩↩↩↩ -
Kiradex,
KiradexTests/ScanSessionTests.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 188 到 201 行(aGradedCardCarriesItsLabel,它的读取在第 190 行以“1999 POKEMON GAME”开头,第 192 行的期望比较整个标签;wordsCardsPrintAreNotGraders,第 198 行为 ACE SPEC,第 199 行为 TAG TEAM,第 200 行为七位数的 ACE 那一行)。本文没有运行。 ↩↩↩↩↩↩ -
Kiradex,
Kiradex/Scanner/FixtureScan.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 32 到 50 行(画出的固定样例标签,六行:一栏中是第 35 行的“2026 KIRA BASE”、第 36 行的卡名和第 37 行的“49392218”;另一栏中是第 41 到 43 行的“PSA”“GEM MT”和“10”),以及第 14 行和第 56 到 63 行(卡名及其编号,以三位数字对三位数字的形式画在卡上)。 ↩↩↩↩↩ -
Kiradex,
docs/ROADMAP.md,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令);该文件当天在 16:09 修改过,又在最后两次复核之间的 17:29 修改过,所引用的行在两个时间点都相同:第 72 到 73 行(“Run it on a phone”(在手机上运行),未经证明的项目中包括隔着塑料的评级壳)。 ↩↩ -
作者对 2026 年 10 月 15 日 Kiradex 工作树的理解:位于提交
fc9d4876(refs/heads/main,当天太平洋时间 17:45 提交)之上的未提交改动,该提交中的Kiradex/Scanner/SlabLabel.swift与5a344e3f中的文件逐字节相同(两者都从仓库存储的对象中读取,没有运行任何 git 命令)。与已提交文件不同的工作树SlabLabel.swift,于太平洋时间 22:51 复制到作者的证据文件夹,命名为SlabLabel.swift.worktree-20261015(8,938 字节;SHA-256 为11984a36f2ce8ddcf85e438057965ef4f765c191a927d6db708faf33c26284e5,记录在旁边)。该副本第 76 到 81 行是按评级公司区分的证书编号模式(PSA 为#/\d{7,9}/#,SGC 为#/\d{7}(?:-\d{3})?/#,TAG 为#/[A-Z]\d{7}/#,ACE 为#/\d{4,7}/#),第 109 行是URL(string: "https://acegrading.com/cert/\(cert)"),第 117 行是static func read(code: String) -> (grader: Grader, cert: String)?。读取时这些都还没有提交。该副本第 30 行还有字符串字面量"Professional Sports Authenticator";10 月 15 日太平洋时间 23:58 对工作树Kiradex/下 Swift 文件的搜索,没有找到以完整单词含有“verified”或“authentic”的字符串字面量,只找到这一个在更长单词中含有“authentic”的字面量。本文对 Kiradex 的其他读取都基于提交5a344e3f,并已注明日期。 ↩↩ -
Kiradex,
KiradexTests/CopyTests.swift,2026 年 10 月 5 日 16:44 到 16:53 PDT 之间读取,17:15 PDT 在 HEAD 为提交cf3beb1e时复核,又在 17:28 和 17:29 PDT、HEAD 为其后两个提交1a2c2e9d和5a344e3f时复核,此处引用的每一行都没有变化(那天工作树一直在编辑,所以这些行以那次读取为准;只读,没有运行任何 git 命令):第 11 到 17 行(emptyContext(),一个内存中的ModelContainer)和第 163 到 176 行(aRawCopyKeepsItsCentring,其第 175 行期望评级副本的汇总为“PSA 10”)。本文没有运行。 ↩↩ -
Kiradex,
Kiradex/Services/PatronStore.swift,按5a344e3f提交时的状态,于 2026 年 10 月 16 日从仓库存储的对象中读取,没有运行任何 git 命令:第 31、63 和 73 行匹配 StoreKit 的.verifiedcase(if case .verified(let transaction) = update、guard case .verified(let transaction) = result),这是代码,不是字符串字面量。 ↩