"""Strict final check of the DeepSeek paper collection. Usage: python final_check.py """ import json import os import re import sys plan = json.load(open(sys.argv[1], encoding='utf-8')) base = sys.argv[2] problems = [] tot_cjk = 0 tot_pdf = 0 for p in plan: tag = p['id'] pdf = os.path.join(base, p['pdf_path']) md = os.path.join(base, p['md_path']) # PDF if not os.path.exists(pdf): problems.append((tag, 'PDF missing')) else: with open(pdf, 'rb') as f: head = f.read(5) size = os.path.getsize(pdf) tot_pdf += size if head[:4] != b'%PDF': problems.append((tag, 'PDF header invalid: %r' % head)) if size < 20000: problems.append((tag, 'PDF too small: %d' % size)) # MD if not os.path.exists(md): problems.append((tag, 'MD missing')) continue t = open(md, encoding='utf-8').read() cjk = len(re.findall(r'[\u4e00-\u9fff]', t)) tot_cjk += cjk if not t.lstrip().startswith('# '): problems.append((tag, 'no H1 heading')) for sec in ['## 一、', '## 二、', '## 三、', '## 四、', '## 五、', '## 六、']: if sec not in t: problems.append((tag, 'missing section %s' % sec)) if cjk < 1200: problems.append((tag, 'too little Chinese text: %d' % cjk)) if p['id'] not in t: problems.append((tag, 'arXiv id not referenced in MD')) if 'arxiv.org/abs/' + p['id'] not in t: problems.append((tag, 'abs link missing in MD')) # relative pdf link resolves m = re.search(r'\]\(\./([^)]+\.pdf)\)', t) if not m: problems.append((tag, 'no relative PDF link')) else: target = os.path.join(os.path.dirname(md), m.group(1)) if not os.path.exists(target): problems.append((tag, 'relative PDF link broken: %s' % m.group(1))) elif target != pdf.replace('/', os.sep) and os.path.basename(target) != os.path.basename(pdf): problems.append((tag, 'PDF link points elsewhere: %s' % m.group(1))) # README rd = os.path.join(base, 'README.md') if not os.path.exists(rd): problems.append(('README', 'missing')) else: rt = open(rd, encoding='utf-8').read() if '(待生成)' in rt: problems.append(('README', 'still contains 待生成 placeholder')) listed = len(re.findall(r'\| \d+ \| \[', rt)) if listed != len(plan): problems.append(('README', 'overview rows %d != %d' % (listed, len(plan)))) for p in plan: if p['stem'] not in rt: problems.append(('README', 'missing entry ' + p['stem'])) print('papers checked :', len(plan)) print('total PDF bytes : %.1f MB' % (tot_pdf / 1024 / 1024)) print('total Chinese chars :', tot_cjk) print('problems :', len(problems)) for t, m in problems: print(' !', t, m)