gaokao-pro 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -0
- package/data/datasets/gaoshui-yundongdui-2024.json +33 -0
- package/data/datasets/junjing-jingxiao.json +75 -0
- package/data/datasets/provinces-specialty-2024.json +139 -0
- package/data/datasets/qiangji-2024.json +52 -0
- package/data/datasets/schools-adapters-2024.json +123 -0
- package/data/datasets/sushe-shitang.json +40 -0
- package/data/datasets/tijian-shouxian-zhuanye.json +29 -0
- package/data/datasets/xiaoyuzhong-zhaosheng.json +18 -0
- package/data/datasets/xueke-pinggu-disculun.json +28 -0
- package/data/datasets/zhongwai-hezuo-2024.json +36 -0
- package/data/datasets/zonghepingjia-2024.json +53 -0
- package/data/school-index.json.gz +0 -0
- package/data/yifenyiduan/_ocr-pipeline/extract-pdf.py +117 -0
- package/data/yifenyiduan/beijing-2023-combined.json +1 -0
- package/data/yifenyiduan/beijing-2024-combined.json +1 -0
- package/data/yifenyiduan/beijing-2025-combined.json +1 -0
- package/data/yifenyiduan/henan-2024-liberal.json +1 -0
- package/data/yifenyiduan/hunan-2024-history.json +1 -0
- package/dist/aliases.d.ts +2 -0
- package/dist/aliases.js +120 -0
- package/dist/chart-check.d.ts +20 -0
- package/dist/chart-check.js +99 -0
- package/dist/codes.d.ts +162 -0
- package/dist/codes.js +59 -0
- package/dist/compare.d.ts +39 -0
- package/dist/compare.js +112 -0
- package/dist/datasets.d.ts +65 -0
- package/dist/datasets.js +82 -0
- package/dist/find.d.ts +48 -0
- package/dist/find.js +87 -0
- package/dist/format.d.ts +17 -0
- package/dist/format.js +109 -0
- package/dist/gaokao-cn.d.ts +122 -0
- package/dist/gaokao-cn.js +49 -0
- package/dist/index-loader.d.ts +33 -0
- package/dist/index-loader.js +59 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +727 -0
- package/dist/match.d.ts +40 -0
- package/dist/match.js +118 -0
- package/dist/mcp.d.ts +1 -0
- package/dist/mcp.js +535 -0
- package/dist/memory.d.ts +31 -0
- package/dist/memory.js +69 -0
- package/dist/paiming.d.ts +29 -0
- package/dist/paiming.js +66 -0
- package/dist/probe.d.ts +1 -0
- package/dist/probe.js +73 -0
- package/dist/provinces/guangdong.d.ts +27 -0
- package/dist/provinces/guangdong.js +68 -0
- package/dist/provinces/index.d.ts +1 -0
- package/dist/provinces/index.js +17 -0
- package/dist/rank-table.d.ts +31 -0
- package/dist/rank-table.js +74 -0
- package/dist/recommend-major.d.ts +34 -0
- package/dist/recommend-major.js +119 -0
- package/dist/recommend.d.ts +54 -0
- package/dist/recommend.js +147 -0
- package/dist/selftest.d.ts +11 -0
- package/dist/selftest.js +48 -0
- package/dist/top.d.ts +29 -0
- package/dist/top.js +66 -0
- package/dist/xuanke.d.ts +8 -0
- package/dist/xuanke.js +35 -0
- package/package.json +40 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
OCR pipeline for province 一分一段 PDF → JSON.
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
python extract-pdf.py <pdf-url-or-path> <province-pinyin> <year> <track> > out.json
|
|
7
|
+
|
|
8
|
+
Track keys: physics | history | combined | science | liberal
|
|
9
|
+
|
|
10
|
+
Requires: pdftoppm (poppler), tesseract with chi_sim language pack.
|
|
11
|
+
|
|
12
|
+
The 一分一段 PDFs are image-only (rasterized table screenshots), so we:
|
|
13
|
+
1. Convert each PDF page → PNG (pdftoppm -r 200)
|
|
14
|
+
2. OCR each PNG with tesseract -l chi_sim
|
|
15
|
+
3. Regex-extract rows of the form "<score> <count>" where score ∈ [200, 750]
|
|
16
|
+
4. Sort + dedupe + emit RankTable JSON shape (count→cumulative we compute
|
|
17
|
+
as the value the table gives — note Henan's table uses cumulative
|
|
18
|
+
directly in the count column).
|
|
19
|
+
"""
|
|
20
|
+
import json
|
|
21
|
+
import re
|
|
22
|
+
import subprocess
|
|
23
|
+
import sys
|
|
24
|
+
import tempfile
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def ocr_pdf(pdf_path: str) -> str:
|
|
29
|
+
"""Convert PDF to PNGs, OCR each, return concatenated text."""
|
|
30
|
+
with tempfile.TemporaryDirectory() as td:
|
|
31
|
+
# 1. PDF → PNGs
|
|
32
|
+
subprocess.run(
|
|
33
|
+
["pdftoppm", "-r", "200", pdf_path, f"{td}/p", "-png"],
|
|
34
|
+
check=True,
|
|
35
|
+
)
|
|
36
|
+
pages = sorted(Path(td).glob("p-*.png"))
|
|
37
|
+
all_text = []
|
|
38
|
+
for p in pages:
|
|
39
|
+
r = subprocess.run(
|
|
40
|
+
["tesseract", str(p), "-", "-l", "chi_sim"],
|
|
41
|
+
check=True,
|
|
42
|
+
capture_output=True,
|
|
43
|
+
text=True,
|
|
44
|
+
)
|
|
45
|
+
all_text.append(r.stdout)
|
|
46
|
+
return "\n".join(all_text)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Two-number rows: <score in [200, 750]> ... <count in [1, 999999]>
|
|
50
|
+
ROW_RE = re.compile(r"(?<!\d)(\d{3})\s+(\d{1,6})(?!\d)")
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def parse_rows(text: str) -> list[dict]:
|
|
54
|
+
seen = {}
|
|
55
|
+
for line in text.splitlines():
|
|
56
|
+
for m in ROW_RE.finditer(line):
|
|
57
|
+
score = int(m.group(1))
|
|
58
|
+
count = int(m.group(2))
|
|
59
|
+
if 200 <= score <= 750 and 1 <= count <= 9_999_999:
|
|
60
|
+
# Prefer the LARGER count for duplicates — usually the true row,
|
|
61
|
+
# since OCR sometimes returns small partial numbers.
|
|
62
|
+
if score not in seen or count > seen[score]:
|
|
63
|
+
seen[score] = count
|
|
64
|
+
rows = sorted(
|
|
65
|
+
({"score": s, "cumulative": c} for s, c in seen.items()),
|
|
66
|
+
key=lambda r: -r["score"],
|
|
67
|
+
)
|
|
68
|
+
# Enforce monotonic: cumulative must be non-decreasing as score decreases
|
|
69
|
+
# (i.e. as we walk down the sorted list, cumulative should grow). Drop
|
|
70
|
+
# rows that violate monotonicity (these are usually OCR misreads).
|
|
71
|
+
clean = []
|
|
72
|
+
last = 0
|
|
73
|
+
for r in rows:
|
|
74
|
+
if r["cumulative"] >= last:
|
|
75
|
+
clean.append(r)
|
|
76
|
+
last = r["cumulative"]
|
|
77
|
+
return clean
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def main():
|
|
81
|
+
if len(sys.argv) != 5:
|
|
82
|
+
print("usage: extract-pdf.py <pdf-path-or-url> <province-pinyin> <year> <track>", file=sys.stderr)
|
|
83
|
+
sys.exit(1)
|
|
84
|
+
pdf_arg, province, year, track = sys.argv[1:]
|
|
85
|
+
if pdf_arg.startswith("http"):
|
|
86
|
+
# download
|
|
87
|
+
with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as tf:
|
|
88
|
+
subprocess.run(["curl", "-sSL", "-o", tf.name, pdf_arg, "-H", "User-Agent: Mozilla/5.0"], check=True)
|
|
89
|
+
pdf_path = tf.name
|
|
90
|
+
else:
|
|
91
|
+
pdf_path = pdf_arg
|
|
92
|
+
|
|
93
|
+
text = ocr_pdf(pdf_path)
|
|
94
|
+
rows = parse_rows(text)
|
|
95
|
+
|
|
96
|
+
province_name = {
|
|
97
|
+
"henan": "河南", "shandong": "山东", "guangdong": "广东", "jiangsu": "江苏",
|
|
98
|
+
"hebei": "河北", "sichuan": "四川", "anhui": "安徽", "hubei": "湖北",
|
|
99
|
+
"hunan": "湖南", "fujian": "福建", "jiangxi": "江西", "zhejiang": "浙江",
|
|
100
|
+
"shanghai": "上海", "beijing": "北京", "tianjin": "天津", "chongqing": "重庆",
|
|
101
|
+
}.get(province, province)
|
|
102
|
+
|
|
103
|
+
out = {
|
|
104
|
+
"province": province,
|
|
105
|
+
"province_name": province_name,
|
|
106
|
+
"year": int(year),
|
|
107
|
+
"track": track,
|
|
108
|
+
"source": pdf_arg if pdf_arg.startswith("http") else "local PDF",
|
|
109
|
+
"extraction": "pdftoppm + tesseract -l chi_sim",
|
|
110
|
+
"count": len(rows),
|
|
111
|
+
"rows": [{"score": r["score"], "count": 0, "cumulative": r["cumulative"]} for r in rows],
|
|
112
|
+
}
|
|
113
|
+
print(json.dumps(out, ensure_ascii=False, separators=(",", ":")))
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
if __name__ == "__main__":
|
|
117
|
+
main()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"province":"beijing","province_name":"北京","year":2023,"track":"combined","source":"北京教育考试院 (bjeea.cn)","note":"统计中的分数含全国性照顾加分","count":297,"rows":[{"score":696,"count":104,"cumulative":104},{"score":695,"count":11,"cumulative":115},{"score":694,"count":12,"cumulative":127},{"score":693,"count":17,"cumulative":144},{"score":692,"count":24,"cumulative":168},{"score":691,"count":24,"cumulative":192},{"score":690,"count":29,"cumulative":221},{"score":689,"count":30,"cumulative":251},{"score":688,"count":33,"cumulative":284},{"score":687,"count":29,"cumulative":313},{"score":686,"count":23,"cumulative":336},{"score":685,"count":32,"cumulative":368},{"score":684,"count":34,"cumulative":402},{"score":683,"count":40,"cumulative":442},{"score":682,"count":40,"cumulative":482},{"score":681,"count":32,"cumulative":514},{"score":680,"count":40,"cumulative":554},{"score":679,"count":52,"cumulative":606},{"score":678,"count":44,"cumulative":650},{"score":677,"count":44,"cumulative":694},{"score":676,"count":37,"cumulative":731},{"score":675,"count":60,"cumulative":791},{"score":674,"count":47,"cumulative":838},{"score":673,"count":56,"cumulative":894},{"score":672,"count":46,"cumulative":940},{"score":671,"count":69,"cumulative":1009},{"score":670,"count":57,"cumulative":1066},{"score":669,"count":61,"cumulative":1127},{"score":668,"count":65,"cumulative":1192},{"score":667,"count":72,"cumulative":1264},{"score":666,"count":73,"cumulative":1337},{"score":665,"count":82,"cumulative":1419},{"score":664,"count":66,"cumulative":1485},{"score":663,"count":96,"cumulative":1581},{"score":662,"count":81,"cumulative":1662},{"score":661,"count":82,"cumulative":1744},{"score":660,"count":92,"cumulative":1836},{"score":659,"count":65,"cumulative":1901},{"score":658,"count":78,"cumulative":1979},{"score":657,"count":104,"cumulative":2083},{"score":656,"count":97,"cumulative":2180},{"score":655,"count":89,"cumulative":2269},{"score":654,"count":100,"cumulative":2369},{"score":653,"count":88,"cumulative":2457},{"score":652,"count":87,"cumulative":2544},{"score":651,"count":104,"cumulative":2648},{"score":650,"count":106,"cumulative":2754},{"score":649,"count":120,"cumulative":2874},{"score":648,"count":116,"cumulative":2990},{"score":647,"count":106,"cumulative":3096},{"score":646,"count":128,"cumulative":3224},{"score":645,"count":123,"cumulative":3347},{"score":644,"count":108,"cumulative":3455},{"score":643,"count":108,"cumulative":3563},{"score":642,"count":134,"cumulative":3697},{"score":641,"count":119,"cumulative":3816},{"score":640,"count":109,"cumulative":3925},{"score":639,"count":145,"cumulative":4070},{"score":638,"count":122,"cumulative":4192},{"score":637,"count":133,"cumulative":4325},{"score":636,"count":133,"cumulative":4458},{"score":635,"count":146,"cumulative":4604},{"score":634,"count":125,"cumulative":4729},{"score":633,"count":152,"cumulative":4881},{"score":632,"count":148,"cumulative":5029},{"score":631,"count":132,"cumulative":5161},{"score":630,"count":147,"cumulative":5308},{"score":629,"count":149,"cumulative":5457},{"score":628,"count":139,"cumulative":5596},{"score":627,"count":159,"cumulative":5755},{"score":626,"count":140,"cumulative":5895},{"score":625,"count":150,"cumulative":6045},{"score":624,"count":157,"cumulative":6202},{"score":623,"count":173,"cumulative":6375},{"score":622,"count":153,"cumulative":6528},{"score":621,"count":163,"cumulative":6691},{"score":620,"count":170,"cumulative":6861},{"score":619,"count":176,"cumulative":7037},{"score":618,"count":165,"cumulative":7202},{"score":617,"count":159,"cumulative":7361},{"score":616,"count":181,"cumulative":7542},{"score":615,"count":158,"cumulative":7700},{"score":614,"count":162,"cumulative":7862},{"score":613,"count":137,"cumulative":7999},{"score":612,"count":148,"cumulative":8147},{"score":611,"count":182,"cumulative":8329},{"score":610,"count":193,"cumulative":8522},{"score":609,"count":170,"cumulative":8692},{"score":608,"count":168,"cumulative":8860},{"score":607,"count":172,"cumulative":9032},{"score":606,"count":165,"cumulative":9197},{"score":605,"count":170,"cumulative":9367},{"score":604,"count":207,"cumulative":9574},{"score":603,"count":191,"cumulative":9765},{"score":602,"count":234,"cumulative":9999},{"score":601,"count":169,"cumulative":10168},{"score":600,"count":180,"cumulative":10348},{"score":599,"count":160,"cumulative":10508},{"score":598,"count":191,"cumulative":10699},{"score":597,"count":160,"cumulative":10859},{"score":596,"count":212,"cumulative":11071},{"score":595,"count":204,"cumulative":11275},{"score":594,"count":201,"cumulative":11476},{"score":593,"count":182,"cumulative":11658},{"score":592,"count":200,"cumulative":11858},{"score":591,"count":189,"cumulative":12047},{"score":590,"count":200,"cumulative":12247},{"score":589,"count":193,"cumulative":12440},{"score":588,"count":178,"cumulative":12618},{"score":587,"count":174,"cumulative":12792},{"score":586,"count":215,"cumulative":13007},{"score":585,"count":198,"cumulative":13205},{"score":584,"count":192,"cumulative":13397},{"score":583,"count":214,"cumulative":13611},{"score":582,"count":187,"cumulative":13798},{"score":581,"count":198,"cumulative":13996},{"score":580,"count":190,"cumulative":14186},{"score":579,"count":189,"cumulative":14375},{"score":578,"count":173,"cumulative":14548},{"score":577,"count":221,"cumulative":14769},{"score":576,"count":191,"cumulative":14960},{"score":575,"count":209,"cumulative":15169},{"score":574,"count":220,"cumulative":15389},{"score":573,"count":205,"cumulative":15594},{"score":572,"count":181,"cumulative":15775},{"score":571,"count":208,"cumulative":15983},{"score":570,"count":212,"cumulative":16195},{"score":569,"count":222,"cumulative":16417},{"score":568,"count":183,"cumulative":16600},{"score":567,"count":216,"cumulative":16816},{"score":566,"count":214,"cumulative":17030},{"score":565,"count":194,"cumulative":17224},{"score":564,"count":193,"cumulative":17417},{"score":563,"count":200,"cumulative":17617},{"score":562,"count":202,"cumulative":17819},{"score":561,"count":207,"cumulative":18026},{"score":560,"count":209,"cumulative":18235},{"score":559,"count":225,"cumulative":18460},{"score":558,"count":213,"cumulative":18673},{"score":557,"count":209,"cumulative":18882},{"score":556,"count":210,"cumulative":19092},{"score":555,"count":228,"cumulative":19320},{"score":554,"count":210,"cumulative":19530},{"score":553,"count":220,"cumulative":19750},{"score":552,"count":244,"cumulative":19994},{"score":551,"count":198,"cumulative":20192},{"score":550,"count":195,"cumulative":20387},{"score":549,"count":210,"cumulative":20597},{"score":548,"count":193,"cumulative":20790},{"score":547,"count":230,"cumulative":21020},{"score":546,"count":219,"cumulative":21239},{"score":545,"count":228,"cumulative":21467},{"score":544,"count":193,"cumulative":21660},{"score":543,"count":250,"cumulative":21910},{"score":542,"count":238,"cumulative":22148},{"score":541,"count":195,"cumulative":22343},{"score":540,"count":217,"cumulative":22560},{"score":539,"count":244,"cumulative":22804},{"score":538,"count":204,"cumulative":23008},{"score":537,"count":234,"cumulative":23242},{"score":536,"count":226,"cumulative":23468},{"score":535,"count":258,"cumulative":23726},{"score":534,"count":228,"cumulative":23954},{"score":533,"count":228,"cumulative":24182},{"score":532,"count":223,"cumulative":24405},{"score":531,"count":224,"cumulative":24629},{"score":530,"count":223,"cumulative":24852},{"score":529,"count":232,"cumulative":25084},{"score":528,"count":229,"cumulative":25313},{"score":527,"count":238,"cumulative":25551},{"score":526,"count":225,"cumulative":25776},{"score":525,"count":227,"cumulative":26003},{"score":524,"count":246,"cumulative":26249},{"score":523,"count":217,"cumulative":26466},{"score":522,"count":258,"cumulative":26724},{"score":521,"count":215,"cumulative":26939},{"score":520,"count":237,"cumulative":27176},{"score":519,"count":226,"cumulative":27402},{"score":518,"count":247,"cumulative":27649},{"score":517,"count":228,"cumulative":27877},{"score":516,"count":258,"cumulative":28135},{"score":515,"count":214,"cumulative":28349},{"score":514,"count":213,"cumulative":28562},{"score":513,"count":227,"cumulative":28789},{"score":512,"count":209,"cumulative":28998},{"score":511,"count":231,"cumulative":29229},{"score":510,"count":248,"cumulative":29477},{"score":509,"count":216,"cumulative":29693},{"score":508,"count":253,"cumulative":29946},{"score":507,"count":259,"cumulative":30205},{"score":506,"count":256,"cumulative":30461},{"score":505,"count":224,"cumulative":30685},{"score":504,"count":218,"cumulative":30903},{"score":503,"count":257,"cumulative":31160},{"score":502,"count":218,"cumulative":31378},{"score":501,"count":223,"cumulative":31601},{"score":500,"count":230,"cumulative":31831},{"score":499,"count":207,"cumulative":32038},{"score":498,"count":226,"cumulative":32264},{"score":497,"count":243,"cumulative":32507},{"score":496,"count":246,"cumulative":32753},{"score":495,"count":200,"cumulative":32953},{"score":494,"count":241,"cumulative":33194},{"score":493,"count":225,"cumulative":33419},{"score":492,"count":227,"cumulative":33646},{"score":491,"count":242,"cumulative":33888},{"score":490,"count":215,"cumulative":34103},{"score":489,"count":200,"cumulative":34303},{"score":488,"count":235,"cumulative":34538},{"score":487,"count":211,"cumulative":34749},{"score":486,"count":216,"cumulative":34965},{"score":485,"count":216,"cumulative":35181},{"score":484,"count":238,"cumulative":35419},{"score":483,"count":202,"cumulative":35621},{"score":482,"count":222,"cumulative":35843},{"score":481,"count":180,"cumulative":36023},{"score":480,"count":204,"cumulative":36227},{"score":479,"count":214,"cumulative":36441},{"score":478,"count":226,"cumulative":36667},{"score":477,"count":222,"cumulative":36889},{"score":476,"count":220,"cumulative":37109},{"score":475,"count":182,"cumulative":37291},{"score":474,"count":204,"cumulative":37495},{"score":473,"count":225,"cumulative":37720},{"score":472,"count":192,"cumulative":37912},{"score":471,"count":210,"cumulative":38122},{"score":470,"count":189,"cumulative":38311},{"score":469,"count":179,"cumulative":38490},{"score":468,"count":205,"cumulative":38695},{"score":467,"count":181,"cumulative":38876},{"score":466,"count":199,"cumulative":39075},{"score":465,"count":183,"cumulative":39258},{"score":464,"count":177,"cumulative":39435},{"score":463,"count":195,"cumulative":39630},{"score":462,"count":200,"cumulative":39830},{"score":461,"count":203,"cumulative":40033},{"score":460,"count":173,"cumulative":40206},{"score":459,"count":190,"cumulative":40396},{"score":458,"count":181,"cumulative":40577},{"score":457,"count":185,"cumulative":40762},{"score":456,"count":166,"cumulative":40928},{"score":455,"count":171,"cumulative":41099},{"score":454,"count":172,"cumulative":41271},{"score":453,"count":179,"cumulative":41450},{"score":452,"count":174,"cumulative":41624},{"score":451,"count":189,"cumulative":41813},{"score":450,"count":168,"cumulative":41981},{"score":449,"count":208,"cumulative":42189},{"score":448,"count":158,"cumulative":42347},{"score":447,"count":178,"cumulative":42525},{"score":446,"count":159,"cumulative":42684},{"score":445,"count":194,"cumulative":42878},{"score":444,"count":153,"cumulative":43031},{"score":443,"count":195,"cumulative":43226},{"score":442,"count":162,"cumulative":43388},{"score":441,"count":140,"cumulative":43528},{"score":440,"count":163,"cumulative":43691},{"score":439,"count":186,"cumulative":43877},{"score":438,"count":153,"cumulative":44030},{"score":437,"count":162,"cumulative":44192},{"score":436,"count":158,"cumulative":44350},{"score":435,"count":136,"cumulative":44486},{"score":434,"count":172,"cumulative":44658},{"score":433,"count":164,"cumulative":44822},{"score":432,"count":148,"cumulative":44970},{"score":431,"count":144,"cumulative":45114},{"score":430,"count":147,"cumulative":45261},{"score":429,"count":147,"cumulative":45408},{"score":428,"count":148,"cumulative":45556},{"score":427,"count":135,"cumulative":45691},{"score":426,"count":128,"cumulative":45819},{"score":425,"count":142,"cumulative":45961},{"score":424,"count":148,"cumulative":46109},{"score":423,"count":150,"cumulative":46259},{"score":422,"count":149,"cumulative":46408},{"score":421,"count":133,"cumulative":46541},{"score":420,"count":137,"cumulative":46678},{"score":419,"count":129,"cumulative":46807},{"score":418,"count":118,"cumulative":46925},{"score":417,"count":143,"cumulative":47068},{"score":416,"count":124,"cumulative":47192},{"score":415,"count":121,"cumulative":47313},{"score":414,"count":107,"cumulative":47420},{"score":413,"count":120,"cumulative":47540},{"score":412,"count":100,"cumulative":47640},{"score":411,"count":114,"cumulative":47754},{"score":410,"count":117,"cumulative":47871},{"score":409,"count":102,"cumulative":47973},{"score":408,"count":114,"cumulative":48087},{"score":407,"count":124,"cumulative":48211},{"score":406,"count":135,"cumulative":48346},{"score":405,"count":111,"cumulative":48457},{"score":404,"count":105,"cumulative":48562},{"score":403,"count":128,"cumulative":48690},{"score":402,"count":107,"cumulative":48797},{"score":401,"count":97,"cumulative":48894},{"score":400,"count":116,"cumulative":49010}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"province":"beijing","province_name":"北京","year":2024,"track":"combined","source":"北京教育考试院 (bjeea.cn)","note":"统计中的分数含全国性照顾加分","count":301,"rows":[{"score":700,"count":117,"cumulative":117},{"score":699,"count":15,"cumulative":132},{"score":698,"count":16,"cumulative":148},{"score":697,"count":17,"cumulative":165},{"score":696,"count":18,"cumulative":183},{"score":695,"count":19,"cumulative":202},{"score":694,"count":23,"cumulative":225},{"score":693,"count":26,"cumulative":251},{"score":692,"count":27,"cumulative":278},{"score":691,"count":49,"cumulative":327},{"score":690,"count":27,"cumulative":354},{"score":689,"count":30,"cumulative":384},{"score":688,"count":39,"cumulative":423},{"score":687,"count":25,"cumulative":448},{"score":686,"count":30,"cumulative":478},{"score":685,"count":44,"cumulative":522},{"score":684,"count":47,"cumulative":569},{"score":683,"count":56,"cumulative":625},{"score":682,"count":46,"cumulative":671},{"score":681,"count":51,"cumulative":722},{"score":680,"count":42,"cumulative":764},{"score":679,"count":49,"cumulative":813},{"score":678,"count":59,"cumulative":872},{"score":677,"count":60,"cumulative":932},{"score":676,"count":64,"cumulative":996},{"score":675,"count":81,"cumulative":1077},{"score":674,"count":61,"cumulative":1138},{"score":673,"count":66,"cumulative":1204},{"score":672,"count":57,"cumulative":1261},{"score":671,"count":82,"cumulative":1343},{"score":670,"count":77,"cumulative":1420},{"score":669,"count":58,"cumulative":1478},{"score":668,"count":79,"cumulative":1557},{"score":667,"count":60,"cumulative":1617},{"score":666,"count":87,"cumulative":1704},{"score":665,"count":72,"cumulative":1776},{"score":664,"count":84,"cumulative":1860},{"score":663,"count":89,"cumulative":1949},{"score":662,"count":87,"cumulative":2036},{"score":661,"count":82,"cumulative":2118},{"score":660,"count":105,"cumulative":2223},{"score":659,"count":79,"cumulative":2302},{"score":658,"count":93,"cumulative":2395},{"score":657,"count":96,"cumulative":2491},{"score":656,"count":101,"cumulative":2592},{"score":655,"count":95,"cumulative":2687},{"score":654,"count":89,"cumulative":2776},{"score":653,"count":100,"cumulative":2876},{"score":652,"count":100,"cumulative":2976},{"score":651,"count":89,"cumulative":3065},{"score":650,"count":111,"cumulative":3176},{"score":649,"count":91,"cumulative":3267},{"score":648,"count":115,"cumulative":3382},{"score":647,"count":122,"cumulative":3504},{"score":646,"count":107,"cumulative":3611},{"score":645,"count":115,"cumulative":3726},{"score":644,"count":118,"cumulative":3844},{"score":643,"count":136,"cumulative":3980},{"score":642,"count":128,"cumulative":4108},{"score":641,"count":131,"cumulative":4239},{"score":640,"count":126,"cumulative":4365},{"score":639,"count":113,"cumulative":4478},{"score":638,"count":155,"cumulative":4633},{"score":637,"count":156,"cumulative":4789},{"score":636,"count":140,"cumulative":4929},{"score":635,"count":126,"cumulative":5055},{"score":634,"count":121,"cumulative":5176},{"score":633,"count":131,"cumulative":5307},{"score":632,"count":160,"cumulative":5467},{"score":631,"count":156,"cumulative":5623},{"score":630,"count":160,"cumulative":5783},{"score":629,"count":142,"cumulative":5925},{"score":628,"count":160,"cumulative":6085},{"score":627,"count":130,"cumulative":6215},{"score":626,"count":165,"cumulative":6380},{"score":625,"count":166,"cumulative":6546},{"score":624,"count":147,"cumulative":6693},{"score":623,"count":155,"cumulative":6848},{"score":622,"count":153,"cumulative":7001},{"score":621,"count":171,"cumulative":7172},{"score":620,"count":170,"cumulative":7342},{"score":619,"count":149,"cumulative":7491},{"score":618,"count":160,"cumulative":7651},{"score":617,"count":156,"cumulative":7807},{"score":616,"count":173,"cumulative":7980},{"score":615,"count":172,"cumulative":8152},{"score":614,"count":142,"cumulative":8294},{"score":613,"count":178,"cumulative":8472},{"score":612,"count":188,"cumulative":8660},{"score":611,"count":182,"cumulative":8842},{"score":610,"count":180,"cumulative":9022},{"score":609,"count":157,"cumulative":9179},{"score":608,"count":154,"cumulative":9333},{"score":607,"count":166,"cumulative":9499},{"score":606,"count":179,"cumulative":9678},{"score":605,"count":172,"cumulative":9850},{"score":604,"count":191,"cumulative":10041},{"score":603,"count":172,"cumulative":10213},{"score":602,"count":170,"cumulative":10383},{"score":601,"count":202,"cumulative":10585},{"score":600,"count":202,"cumulative":10787},{"score":599,"count":193,"cumulative":10980},{"score":598,"count":177,"cumulative":11157},{"score":597,"count":191,"cumulative":11348},{"score":596,"count":200,"cumulative":11548},{"score":595,"count":177,"cumulative":11725},{"score":594,"count":182,"cumulative":11907},{"score":593,"count":188,"cumulative":12095},{"score":592,"count":168,"cumulative":12263},{"score":591,"count":170,"cumulative":12433},{"score":590,"count":181,"cumulative":12614},{"score":589,"count":180,"cumulative":12794},{"score":588,"count":186,"cumulative":12980},{"score":587,"count":214,"cumulative":13194},{"score":586,"count":213,"cumulative":13407},{"score":585,"count":203,"cumulative":13610},{"score":584,"count":187,"cumulative":13797},{"score":583,"count":206,"cumulative":14003},{"score":582,"count":195,"cumulative":14198},{"score":581,"count":204,"cumulative":14402},{"score":580,"count":194,"cumulative":14596},{"score":579,"count":216,"cumulative":14812},{"score":578,"count":221,"cumulative":15033},{"score":577,"count":191,"cumulative":15224},{"score":576,"count":204,"cumulative":15428},{"score":575,"count":210,"cumulative":15638},{"score":574,"count":221,"cumulative":15859},{"score":573,"count":210,"cumulative":16069},{"score":572,"count":198,"cumulative":16267},{"score":571,"count":214,"cumulative":16481},{"score":570,"count":177,"cumulative":16658},{"score":569,"count":205,"cumulative":16863},{"score":568,"count":238,"cumulative":17101},{"score":567,"count":198,"cumulative":17299},{"score":566,"count":210,"cumulative":17509},{"score":565,"count":219,"cumulative":17728},{"score":564,"count":230,"cumulative":17958},{"score":563,"count":217,"cumulative":18175},{"score":562,"count":220,"cumulative":18395},{"score":561,"count":171,"cumulative":18566},{"score":560,"count":226,"cumulative":18792},{"score":559,"count":191,"cumulative":18983},{"score":558,"count":212,"cumulative":19195},{"score":557,"count":227,"cumulative":19422},{"score":556,"count":237,"cumulative":19659},{"score":555,"count":208,"cumulative":19867},{"score":554,"count":219,"cumulative":20086},{"score":553,"count":225,"cumulative":20311},{"score":552,"count":213,"cumulative":20524},{"score":551,"count":225,"cumulative":20749},{"score":550,"count":241,"cumulative":20990},{"score":549,"count":208,"cumulative":21198},{"score":548,"count":235,"cumulative":21433},{"score":547,"count":226,"cumulative":21659},{"score":546,"count":222,"cumulative":21881},{"score":545,"count":193,"cumulative":22074},{"score":544,"count":204,"cumulative":22278},{"score":543,"count":198,"cumulative":22476},{"score":542,"count":219,"cumulative":22695},{"score":541,"count":220,"cumulative":22915},{"score":540,"count":207,"cumulative":23122},{"score":539,"count":243,"cumulative":23365},{"score":538,"count":242,"cumulative":23607},{"score":537,"count":217,"cumulative":23824},{"score":536,"count":228,"cumulative":24052},{"score":535,"count":224,"cumulative":24276},{"score":534,"count":217,"cumulative":24493},{"score":533,"count":253,"cumulative":24746},{"score":532,"count":230,"cumulative":24976},{"score":531,"count":226,"cumulative":25202},{"score":530,"count":212,"cumulative":25414},{"score":529,"count":216,"cumulative":25630},{"score":528,"count":212,"cumulative":25842},{"score":527,"count":223,"cumulative":26065},{"score":526,"count":220,"cumulative":26285},{"score":525,"count":261,"cumulative":26546},{"score":524,"count":226,"cumulative":26772},{"score":523,"count":224,"cumulative":26996},{"score":522,"count":238,"cumulative":27234},{"score":521,"count":259,"cumulative":27493},{"score":520,"count":235,"cumulative":27728},{"score":519,"count":213,"cumulative":27941},{"score":518,"count":226,"cumulative":28167},{"score":517,"count":250,"cumulative":28417},{"score":516,"count":205,"cumulative":28622},{"score":515,"count":228,"cumulative":28850},{"score":514,"count":233,"cumulative":29083},{"score":513,"count":234,"cumulative":29317},{"score":512,"count":233,"cumulative":29550},{"score":511,"count":221,"cumulative":29771},{"score":510,"count":213,"cumulative":29984},{"score":509,"count":193,"cumulative":30177},{"score":508,"count":227,"cumulative":30404},{"score":507,"count":248,"cumulative":30652},{"score":506,"count":224,"cumulative":30876},{"score":505,"count":245,"cumulative":31121},{"score":504,"count":247,"cumulative":31368},{"score":503,"count":206,"cumulative":31574},{"score":502,"count":220,"cumulative":31794},{"score":501,"count":217,"cumulative":32011},{"score":500,"count":197,"cumulative":32208},{"score":499,"count":235,"cumulative":32443},{"score":498,"count":224,"cumulative":32667},{"score":497,"count":240,"cumulative":32907},{"score":496,"count":220,"cumulative":33127},{"score":495,"count":227,"cumulative":33354},{"score":494,"count":218,"cumulative":33572},{"score":493,"count":220,"cumulative":33792},{"score":492,"count":215,"cumulative":34007},{"score":491,"count":229,"cumulative":34236},{"score":490,"count":226,"cumulative":34462},{"score":489,"count":209,"cumulative":34671},{"score":488,"count":225,"cumulative":34896},{"score":487,"count":232,"cumulative":35128},{"score":486,"count":210,"cumulative":35338},{"score":485,"count":211,"cumulative":35549},{"score":484,"count":207,"cumulative":35756},{"score":483,"count":175,"cumulative":35931},{"score":482,"count":227,"cumulative":36158},{"score":481,"count":210,"cumulative":36368},{"score":480,"count":194,"cumulative":36562},{"score":479,"count":231,"cumulative":36793},{"score":478,"count":204,"cumulative":36997},{"score":477,"count":197,"cumulative":37194},{"score":476,"count":213,"cumulative":37407},{"score":475,"count":185,"cumulative":37592},{"score":474,"count":215,"cumulative":37807},{"score":473,"count":217,"cumulative":38024},{"score":472,"count":208,"cumulative":38232},{"score":471,"count":213,"cumulative":38445},{"score":470,"count":190,"cumulative":38635},{"score":469,"count":156,"cumulative":38791},{"score":468,"count":206,"cumulative":38997},{"score":467,"count":206,"cumulative":39203},{"score":466,"count":187,"cumulative":39390},{"score":465,"count":200,"cumulative":39590},{"score":464,"count":184,"cumulative":39774},{"score":463,"count":197,"cumulative":39971},{"score":462,"count":179,"cumulative":40150},{"score":461,"count":168,"cumulative":40318},{"score":460,"count":195,"cumulative":40513},{"score":459,"count":203,"cumulative":40716},{"score":458,"count":174,"cumulative":40890},{"score":457,"count":182,"cumulative":41072},{"score":456,"count":183,"cumulative":41255},{"score":455,"count":173,"cumulative":41428},{"score":454,"count":176,"cumulative":41604},{"score":453,"count":200,"cumulative":41804},{"score":452,"count":167,"cumulative":41971},{"score":451,"count":174,"cumulative":42145},{"score":450,"count":169,"cumulative":42314},{"score":449,"count":166,"cumulative":42480},{"score":448,"count":198,"cumulative":42678},{"score":447,"count":168,"cumulative":42846},{"score":446,"count":176,"cumulative":43022},{"score":445,"count":161,"cumulative":43183},{"score":444,"count":186,"cumulative":43369},{"score":443,"count":161,"cumulative":43530},{"score":442,"count":155,"cumulative":43685},{"score":441,"count":168,"cumulative":43853},{"score":440,"count":167,"cumulative":44020},{"score":439,"count":157,"cumulative":44177},{"score":438,"count":170,"cumulative":44347},{"score":437,"count":156,"cumulative":44503},{"score":436,"count":149,"cumulative":44652},{"score":435,"count":137,"cumulative":44789},{"score":434,"count":134,"cumulative":44923},{"score":433,"count":130,"cumulative":45053},{"score":432,"count":161,"cumulative":45214},{"score":431,"count":140,"cumulative":45354},{"score":430,"count":167,"cumulative":45521},{"score":429,"count":149,"cumulative":45670},{"score":428,"count":145,"cumulative":45815},{"score":427,"count":165,"cumulative":45980},{"score":426,"count":132,"cumulative":46112},{"score":425,"count":147,"cumulative":46259},{"score":424,"count":154,"cumulative":46413},{"score":423,"count":140,"cumulative":46553},{"score":422,"count":123,"cumulative":46676},{"score":421,"count":115,"cumulative":46791},{"score":420,"count":130,"cumulative":46921},{"score":419,"count":127,"cumulative":47048},{"score":418,"count":129,"cumulative":47177},{"score":417,"count":128,"cumulative":47305},{"score":416,"count":113,"cumulative":47418},{"score":415,"count":115,"cumulative":47533},{"score":414,"count":112,"cumulative":47645},{"score":413,"count":116,"cumulative":47761},{"score":412,"count":110,"cumulative":47871},{"score":411,"count":122,"cumulative":47993},{"score":410,"count":98,"cumulative":48091},{"score":409,"count":113,"cumulative":48204},{"score":408,"count":122,"cumulative":48326},{"score":407,"count":118,"cumulative":48444},{"score":406,"count":120,"cumulative":48564},{"score":405,"count":124,"cumulative":48688},{"score":404,"count":112,"cumulative":48800},{"score":403,"count":92,"cumulative":48892},{"score":402,"count":104,"cumulative":48996},{"score":401,"count":127,"cumulative":49123},{"score":400,"count":107,"cumulative":49230}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"province":"beijing","province_name":"北京","year":2025,"track":"combined","source":"北京教育考试院 (bjeea.cn)","note":"统计中的分数含全国性照顾加分","count":319,"rows":[{"score":698,"count":113,"cumulative":113},{"score":697,"count":23,"cumulative":136},{"score":696,"count":12,"cumulative":148},{"score":695,"count":21,"cumulative":169},{"score":694,"count":17,"cumulative":186},{"score":693,"count":15,"cumulative":201},{"score":692,"count":27,"cumulative":228},{"score":691,"count":28,"cumulative":256},{"score":690,"count":21,"cumulative":277},{"score":689,"count":26,"cumulative":303},{"score":688,"count":37,"cumulative":340},{"score":687,"count":45,"cumulative":385},{"score":686,"count":34,"cumulative":419},{"score":685,"count":42,"cumulative":461},{"score":684,"count":42,"cumulative":503},{"score":683,"count":48,"cumulative":551},{"score":682,"count":38,"cumulative":589},{"score":681,"count":50,"cumulative":639},{"score":680,"count":46,"cumulative":685},{"score":679,"count":57,"cumulative":742},{"score":678,"count":65,"cumulative":807},{"score":677,"count":54,"cumulative":861},{"score":676,"count":50,"cumulative":911},{"score":675,"count":63,"cumulative":974},{"score":674,"count":55,"cumulative":1029},{"score":673,"count":59,"cumulative":1088},{"score":672,"count":69,"cumulative":1157},{"score":671,"count":87,"cumulative":1244},{"score":670,"count":84,"cumulative":1328},{"score":669,"count":67,"cumulative":1395},{"score":668,"count":79,"cumulative":1474},{"score":667,"count":78,"cumulative":1552},{"score":666,"count":78,"cumulative":1630},{"score":665,"count":102,"cumulative":1732},{"score":664,"count":68,"cumulative":1800},{"score":663,"count":82,"cumulative":1882},{"score":662,"count":79,"cumulative":1961},{"score":661,"count":98,"cumulative":2059},{"score":660,"count":94,"cumulative":2153},{"score":659,"count":93,"cumulative":2246},{"score":658,"count":85,"cumulative":2331},{"score":657,"count":114,"cumulative":2445},{"score":656,"count":95,"cumulative":2540},{"score":655,"count":112,"cumulative":2652},{"score":654,"count":115,"cumulative":2767},{"score":653,"count":122,"cumulative":2889},{"score":652,"count":110,"cumulative":2999},{"score":651,"count":102,"cumulative":3101},{"score":650,"count":102,"cumulative":3203},{"score":649,"count":129,"cumulative":3332},{"score":648,"count":129,"cumulative":3461},{"score":647,"count":129,"cumulative":3590},{"score":646,"count":122,"cumulative":3712},{"score":645,"count":129,"cumulative":3841},{"score":644,"count":135,"cumulative":3976},{"score":643,"count":126,"cumulative":4102},{"score":642,"count":143,"cumulative":4245},{"score":641,"count":123,"cumulative":4368},{"score":640,"count":149,"cumulative":4517},{"score":639,"count":157,"cumulative":4674},{"score":638,"count":160,"cumulative":4834},{"score":637,"count":155,"cumulative":4989},{"score":636,"count":150,"cumulative":5139},{"score":635,"count":165,"cumulative":5304},{"score":634,"count":137,"cumulative":5441},{"score":633,"count":156,"cumulative":5597},{"score":632,"count":152,"cumulative":5749},{"score":631,"count":170,"cumulative":5919},{"score":630,"count":168,"cumulative":6087},{"score":629,"count":164,"cumulative":6251},{"score":628,"count":148,"cumulative":6399},{"score":627,"count":162,"cumulative":6561},{"score":626,"count":179,"cumulative":6740},{"score":625,"count":156,"cumulative":6896},{"score":624,"count":168,"cumulative":7064},{"score":623,"count":185,"cumulative":7249},{"score":622,"count":191,"cumulative":7440},{"score":621,"count":173,"cumulative":7613},{"score":620,"count":191,"cumulative":7804},{"score":619,"count":179,"cumulative":7983},{"score":618,"count":175,"cumulative":8158},{"score":617,"count":167,"cumulative":8325},{"score":616,"count":201,"cumulative":8526},{"score":615,"count":195,"cumulative":8721},{"score":614,"count":202,"cumulative":8923},{"score":613,"count":211,"cumulative":9134},{"score":612,"count":193,"cumulative":9327},{"score":611,"count":196,"cumulative":9523},{"score":610,"count":191,"cumulative":9714},{"score":609,"count":200,"cumulative":9914},{"score":608,"count":197,"cumulative":10111},{"score":607,"count":221,"cumulative":10332},{"score":606,"count":206,"cumulative":10538},{"score":605,"count":215,"cumulative":10753},{"score":604,"count":226,"cumulative":10979},{"score":603,"count":216,"cumulative":11195},{"score":602,"count":231,"cumulative":11426},{"score":601,"count":233,"cumulative":11659},{"score":600,"count":224,"cumulative":11883},{"score":599,"count":220,"cumulative":12103},{"score":598,"count":215,"cumulative":12318},{"score":597,"count":237,"cumulative":12555},{"score":596,"count":222,"cumulative":12777},{"score":595,"count":238,"cumulative":13015},{"score":594,"count":205,"cumulative":13220},{"score":593,"count":216,"cumulative":13436},{"score":592,"count":214,"cumulative":13650},{"score":591,"count":247,"cumulative":13897},{"score":590,"count":205,"cumulative":14102},{"score":589,"count":256,"cumulative":14358},{"score":588,"count":230,"cumulative":14588},{"score":587,"count":222,"cumulative":14810},{"score":586,"count":274,"cumulative":15084},{"score":585,"count":237,"cumulative":15321},{"score":584,"count":226,"cumulative":15547},{"score":583,"count":245,"cumulative":15792},{"score":582,"count":227,"cumulative":16019},{"score":581,"count":218,"cumulative":16237},{"score":580,"count":233,"cumulative":16470},{"score":579,"count":254,"cumulative":16724},{"score":578,"count":280,"cumulative":17004},{"score":577,"count":260,"cumulative":17264},{"score":576,"count":242,"cumulative":17506},{"score":575,"count":248,"cumulative":17754},{"score":574,"count":216,"cumulative":17970},{"score":573,"count":248,"cumulative":18218},{"score":572,"count":247,"cumulative":18465},{"score":571,"count":258,"cumulative":18723},{"score":570,"count":232,"cumulative":18955},{"score":569,"count":266,"cumulative":19221},{"score":568,"count":267,"cumulative":19488},{"score":567,"count":217,"cumulative":19705},{"score":566,"count":244,"cumulative":19949},{"score":565,"count":237,"cumulative":20186},{"score":564,"count":279,"cumulative":20465},{"score":563,"count":237,"cumulative":20702},{"score":562,"count":251,"cumulative":20953},{"score":561,"count":245,"cumulative":21198},{"score":560,"count":225,"cumulative":21423},{"score":559,"count":274,"cumulative":21697},{"score":558,"count":260,"cumulative":21957},{"score":557,"count":260,"cumulative":22217},{"score":556,"count":262,"cumulative":22479},{"score":555,"count":269,"cumulative":22748},{"score":554,"count":254,"cumulative":23002},{"score":553,"count":260,"cumulative":23262},{"score":552,"count":269,"cumulative":23531},{"score":551,"count":265,"cumulative":23796},{"score":550,"count":293,"cumulative":24089},{"score":549,"count":258,"cumulative":24347},{"score":548,"count":264,"cumulative":24611},{"score":547,"count":253,"cumulative":24864},{"score":546,"count":273,"cumulative":25137},{"score":545,"count":273,"cumulative":25410},{"score":544,"count":268,"cumulative":25678},{"score":543,"count":283,"cumulative":25961},{"score":542,"count":283,"cumulative":26244},{"score":541,"count":233,"cumulative":26477},{"score":540,"count":241,"cumulative":26718},{"score":539,"count":271,"cumulative":26989},{"score":538,"count":263,"cumulative":27252},{"score":537,"count":264,"cumulative":27516},{"score":536,"count":280,"cumulative":27796},{"score":535,"count":260,"cumulative":28056},{"score":534,"count":273,"cumulative":28329},{"score":533,"count":266,"cumulative":28595},{"score":532,"count":291,"cumulative":28886},{"score":531,"count":298,"cumulative":29184},{"score":530,"count":291,"cumulative":29475},{"score":529,"count":262,"cumulative":29737},{"score":528,"count":272,"cumulative":30009},{"score":527,"count":273,"cumulative":30282},{"score":526,"count":264,"cumulative":30546},{"score":525,"count":270,"cumulative":30816},{"score":524,"count":310,"cumulative":31126},{"score":523,"count":283,"cumulative":31409},{"score":522,"count":247,"cumulative":31656},{"score":521,"count":244,"cumulative":31900},{"score":520,"count":278,"cumulative":32178},{"score":519,"count":262,"cumulative":32440},{"score":518,"count":235,"cumulative":32675},{"score":517,"count":297,"cumulative":32972},{"score":516,"count":268,"cumulative":33240},{"score":515,"count":234,"cumulative":33474},{"score":514,"count":269,"cumulative":33743},{"score":513,"count":256,"cumulative":33999},{"score":512,"count":273,"cumulative":34272},{"score":511,"count":287,"cumulative":34559},{"score":510,"count":312,"cumulative":34871},{"score":509,"count":265,"cumulative":35136},{"score":508,"count":268,"cumulative":35404},{"score":507,"count":264,"cumulative":35668},{"score":506,"count":285,"cumulative":35953},{"score":505,"count":241,"cumulative":36194},{"score":504,"count":258,"cumulative":36452},{"score":503,"count":264,"cumulative":36716},{"score":502,"count":272,"cumulative":36988},{"score":501,"count":280,"cumulative":37268},{"score":500,"count":285,"cumulative":37553},{"score":499,"count":269,"cumulative":37822},{"score":498,"count":260,"cumulative":38082},{"score":497,"count":270,"cumulative":38352},{"score":496,"count":269,"cumulative":38621},{"score":495,"count":272,"cumulative":38893},{"score":494,"count":251,"cumulative":39144},{"score":493,"count":240,"cumulative":39384},{"score":492,"count":263,"cumulative":39647},{"score":491,"count":265,"cumulative":39912},{"score":490,"count":255,"cumulative":40167},{"score":489,"count":295,"cumulative":40462},{"score":488,"count":278,"cumulative":40740},{"score":487,"count":267,"cumulative":41007},{"score":486,"count":270,"cumulative":41277},{"score":485,"count":284,"cumulative":41561},{"score":484,"count":238,"cumulative":41799},{"score":483,"count":243,"cumulative":42042},{"score":482,"count":251,"cumulative":42293},{"score":481,"count":242,"cumulative":42535},{"score":480,"count":247,"cumulative":42782},{"score":479,"count":283,"cumulative":43065},{"score":478,"count":255,"cumulative":43320},{"score":477,"count":273,"cumulative":43593},{"score":476,"count":259,"cumulative":43852},{"score":475,"count":269,"cumulative":44121},{"score":474,"count":255,"cumulative":44376},{"score":473,"count":230,"cumulative":44606},{"score":472,"count":236,"cumulative":44842},{"score":471,"count":261,"cumulative":45103},{"score":470,"count":235,"cumulative":45338},{"score":469,"count":235,"cumulative":45573},{"score":468,"count":259,"cumulative":45832},{"score":467,"count":239,"cumulative":46071},{"score":466,"count":226,"cumulative":46297},{"score":465,"count":235,"cumulative":46532},{"score":464,"count":234,"cumulative":46766},{"score":463,"count":243,"cumulative":47009},{"score":462,"count":275,"cumulative":47284},{"score":461,"count":220,"cumulative":47504},{"score":460,"count":250,"cumulative":47754},{"score":459,"count":245,"cumulative":47999},{"score":458,"count":220,"cumulative":48219},{"score":457,"count":210,"cumulative":48429},{"score":456,"count":212,"cumulative":48641},{"score":455,"count":207,"cumulative":48848},{"score":454,"count":269,"cumulative":49117},{"score":453,"count":226,"cumulative":49343},{"score":452,"count":215,"cumulative":49558},{"score":451,"count":215,"cumulative":49773},{"score":450,"count":236,"cumulative":50009},{"score":449,"count":220,"cumulative":50229},{"score":448,"count":219,"cumulative":50448},{"score":447,"count":219,"cumulative":50667},{"score":446,"count":225,"cumulative":50892},{"score":445,"count":209,"cumulative":51101},{"score":444,"count":211,"cumulative":51312},{"score":443,"count":198,"cumulative":51510},{"score":442,"count":193,"cumulative":51703},{"score":441,"count":196,"cumulative":51899},{"score":440,"count":173,"cumulative":52072},{"score":439,"count":216,"cumulative":52288},{"score":438,"count":207,"cumulative":52495},{"score":437,"count":218,"cumulative":52713},{"score":436,"count":182,"cumulative":52895},{"score":435,"count":149,"cumulative":53044},{"score":434,"count":216,"cumulative":53260},{"score":433,"count":202,"cumulative":53462},{"score":432,"count":174,"cumulative":53636},{"score":431,"count":161,"cumulative":53797},{"score":430,"count":197,"cumulative":53994},{"score":429,"count":186,"cumulative":54180},{"score":428,"count":147,"cumulative":54327},{"score":427,"count":182,"cumulative":54509},{"score":426,"count":164,"cumulative":54673},{"score":425,"count":175,"cumulative":54848},{"score":424,"count":180,"cumulative":55028},{"score":423,"count":160,"cumulative":55188},{"score":422,"count":149,"cumulative":55337},{"score":421,"count":154,"cumulative":55491},{"score":420,"count":136,"cumulative":55627},{"score":419,"count":150,"cumulative":55777},{"score":418,"count":163,"cumulative":55940},{"score":417,"count":139,"cumulative":56079},{"score":416,"count":146,"cumulative":56225},{"score":415,"count":157,"cumulative":56382},{"score":414,"count":130,"cumulative":56512},{"score":413,"count":152,"cumulative":56664},{"score":412,"count":122,"cumulative":56786},{"score":411,"count":137,"cumulative":56923},{"score":410,"count":148,"cumulative":57071},{"score":409,"count":128,"cumulative":57199},{"score":408,"count":144,"cumulative":57343},{"score":407,"count":139,"cumulative":57482},{"score":406,"count":130,"cumulative":57612},{"score":405,"count":146,"cumulative":57758},{"score":404,"count":145,"cumulative":57903},{"score":403,"count":127,"cumulative":58030},{"score":402,"count":124,"cumulative":58154},{"score":401,"count":120,"cumulative":58274},{"score":400,"count":131,"cumulative":58405},{"score":399,"count":119,"cumulative":58524},{"score":398,"count":132,"cumulative":58656},{"score":397,"count":118,"cumulative":58774},{"score":396,"count":136,"cumulative":58910},{"score":395,"count":118,"cumulative":59028},{"score":394,"count":97,"cumulative":59125},{"score":393,"count":123,"cumulative":59248},{"score":392,"count":102,"cumulative":59350},{"score":391,"count":92,"cumulative":59442},{"score":390,"count":109,"cumulative":59551},{"score":389,"count":93,"cumulative":59644},{"score":388,"count":111,"cumulative":59755},{"score":387,"count":91,"cumulative":59846},{"score":386,"count":92,"cumulative":59938},{"score":385,"count":104,"cumulative":60042},{"score":384,"count":102,"cumulative":60144},{"score":383,"count":99,"cumulative":60243},{"score":382,"count":80,"cumulative":60323},{"score":381,"count":80,"cumulative":60403},{"score":380,"count":82,"cumulative":60485}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"province":"henan","province_name":"河南","year":2024,"track":"liberal","source":"local PDF","extraction":"pdftoppm + tesseract -l chi_sim","count":258,"rows":[{"score":671,"count":0,"cumulative":12},{"score":668,"count":0,"cumulative":13},{"score":667,"count":0,"cumulative":15},{"score":666,"count":0,"cumulative":17},{"score":665,"count":0,"cumulative":18},{"score":664,"count":0,"cumulative":19},{"score":663,"count":0,"cumulative":22},{"score":657,"count":0,"cumulative":41},{"score":656,"count":0,"cumulative":44},{"score":655,"count":0,"cumulative":49},{"score":654,"count":0,"cumulative":59},{"score":642,"count":0,"cumulative":170},{"score":641,"count":0,"cumulative":188},{"score":640,"count":0,"cumulative":208},{"score":639,"count":0,"cumulative":221},{"score":633,"count":0,"cumulative":321},{"score":632,"count":0,"cumulative":340},{"score":631,"count":0,"cumulative":360},{"score":630,"count":0,"cumulative":388},{"score":629,"count":0,"cumulative":410},{"score":628,"count":0,"cumulative":428},{"score":627,"count":0,"cumulative":455},{"score":615,"count":0,"cumulative":916},{"score":610,"count":0,"cumulative":1227},{"score":609,"count":0,"cumulative":1292},{"score":606,"count":0,"cumulative":1496},{"score":605,"count":0,"cumulative":1570},{"score":604,"count":0,"cumulative":1661},{"score":603,"count":0,"cumulative":1723},{"score":602,"count":0,"cumulative":1802},{"score":601,"count":0,"cumulative":1902},{"score":600,"count":0,"cumulative":1985},{"score":588,"count":0,"cumulative":3378},{"score":587,"count":0,"cumulative":3514},{"score":586,"count":0,"cumulative":3651},{"score":585,"count":0,"cumulative":3808},{"score":584,"count":0,"cumulative":4004},{"score":583,"count":0,"cumulative":4196},{"score":582,"count":0,"cumulative":4356},{"score":581,"count":0,"cumulative":4526},{"score":576,"count":0,"cumulative":5468},{"score":575,"count":0,"cumulative":5676},{"score":574,"count":0,"cumulative":5879},{"score":573,"count":0,"cumulative":6088},{"score":572,"count":0,"cumulative":6284},{"score":571,"count":0,"cumulative":6515},{"score":570,"count":0,"cumulative":6767},{"score":569,"count":0,"cumulative":7002},{"score":568,"count":0,"cumulative":7217},{"score":567,"count":0,"cumulative":7469},{"score":560,"count":0,"cumulative":9395},{"score":559,"count":0,"cumulative":9687},{"score":558,"count":0,"cumulative":10012},{"score":552,"count":0,"cumulative":12001},{"score":551,"count":0,"cumulative":12326},{"score":550,"count":0,"cumulative":12699},{"score":549,"count":0,"cumulative":13056},{"score":548,"count":0,"cumulative":13425},{"score":547,"count":0,"cumulative":13805},{"score":546,"count":0,"cumulative":14153},{"score":545,"count":0,"cumulative":14531},{"score":544,"count":0,"cumulative":14934},{"score":529,"count":0,"cumulative":21553},{"score":528,"count":0,"cumulative":22068},{"score":527,"count":0,"cumulative":22561},{"score":526,"count":0,"cumulative":23057},{"score":525,"count":0,"cumulative":23548},{"score":524,"count":0,"cumulative":24082},{"score":523,"count":0,"cumulative":24648},{"score":522,"count":0,"cumulative":25181},{"score":521,"count":0,"cumulative":25688},{"score":520,"count":0,"cumulative":26237},{"score":519,"count":0,"cumulative":26743},{"score":514,"count":0,"cumulative":29603},{"score":513,"count":0,"cumulative":30160},{"score":512,"count":0,"cumulative":30726},{"score":511,"count":0,"cumulative":31332},{"score":510,"count":0,"cumulative":31936},{"score":509,"count":0,"cumulative":32551},{"score":508,"count":0,"cumulative":33183},{"score":507,"count":0,"cumulative":33787},{"score":506,"count":0,"cumulative":34448},{"score":505,"count":0,"cumulative":35107},{"score":504,"count":0,"cumulative":35743},{"score":503,"count":0,"cumulative":36361},{"score":502,"count":0,"cumulative":37018},{"score":501,"count":0,"cumulative":37674},{"score":500,"count":0,"cumulative":38365},{"score":495,"count":0,"cumulative":41702},{"score":494,"count":0,"cumulative":42359},{"score":493,"count":0,"cumulative":43048},{"score":492,"count":0,"cumulative":43733},{"score":491,"count":0,"cumulative":44425},{"score":490,"count":0,"cumulative":45184},{"score":489,"count":0,"cumulative":45924},{"score":488,"count":0,"cumulative":46648},{"score":487,"count":0,"cumulative":47394},{"score":486,"count":0,"cumulative":48153},{"score":479,"count":0,"cumulative":53329},{"score":478,"count":0,"cumulative":54094},{"score":477,"count":0,"cumulative":54915},{"score":471,"count":0,"cumulative":59729},{"score":470,"count":0,"cumulative":60525},{"score":469,"count":0,"cumulative":61381},{"score":468,"count":0,"cumulative":62194},{"score":467,"count":0,"cumulative":63016},{"score":466,"count":0,"cumulative":63839},{"score":465,"count":0,"cumulative":64708},{"score":464,"count":0,"cumulative":65531},{"score":463,"count":0,"cumulative":66389},{"score":433,"count":0,"cumulative":92844},{"score":432,"count":0,"cumulative":93783},{"score":431,"count":0,"cumulative":94756},{"score":430,"count":0,"cumulative":95716},{"score":429,"count":0,"cumulative":96702},{"score":428,"count":0,"cumulative":97632},{"score":427,"count":0,"cumulative":98536},{"score":426,"count":0,"cumulative":99502},{"score":425,"count":0,"cumulative":100480},{"score":424,"count":0,"cumulative":101443},{"score":423,"count":0,"cumulative":102361},{"score":422,"count":0,"cumulative":103279},{"score":421,"count":0,"cumulative":104214},{"score":420,"count":0,"cumulative":105172},{"score":419,"count":0,"cumulative":106137},{"score":414,"count":0,"cumulative":111032},{"score":413,"count":0,"cumulative":112018},{"score":412,"count":0,"cumulative":113010},{"score":411,"count":0,"cumulative":113991},{"score":410,"count":0,"cumulative":115062},{"score":409,"count":0,"cumulative":116073},{"score":408,"count":0,"cumulative":117061},{"score":407,"count":0,"cumulative":118080},{"score":406,"count":0,"cumulative":119130},{"score":405,"count":0,"cumulative":120171},{"score":404,"count":0,"cumulative":121224},{"score":399,"count":0,"cumulative":126542},{"score":398,"count":0,"cumulative":127595},{"score":397,"count":0,"cumulative":128701},{"score":396,"count":0,"cumulative":129734},{"score":390,"count":0,"cumulative":136143},{"score":389,"count":0,"cumulative":137189},{"score":388,"count":0,"cumulative":138265},{"score":387,"count":0,"cumulative":139363},{"score":386,"count":0,"cumulative":140480},{"score":385,"count":0,"cumulative":141559},{"score":384,"count":0,"cumulative":142688},{"score":383,"count":0,"cumulative":143815},{"score":382,"count":0,"cumulative":144946},{"score":373,"count":0,"cumulative":155055},{"score":372,"count":0,"cumulative":156165},{"score":367,"count":0,"cumulative":161929},{"score":366,"count":0,"cumulative":163100},{"score":365,"count":0,"cumulative":164357},{"score":364,"count":0,"cumulative":165477},{"score":363,"count":0,"cumulative":166696},{"score":362,"count":0,"cumulative":167884},{"score":361,"count":0,"cumulative":169090},{"score":360,"count":0,"cumulative":170278},{"score":359,"count":0,"cumulative":171475},{"score":358,"count":0,"cumulative":172653},{"score":357,"count":0,"cumulative":173834},{"score":352,"count":0,"cumulative":179942},{"score":351,"count":0,"cumulative":181104},{"score":350,"count":0,"cumulative":182257},{"score":349,"count":0,"cumulative":183468},{"score":348,"count":0,"cumulative":184634},{"score":347,"count":0,"cumulative":185940},{"score":346,"count":0,"cumulative":187140},{"score":345,"count":0,"cumulative":188463},{"score":344,"count":0,"cumulative":189699},{"score":343,"count":0,"cumulative":190897},{"score":342,"count":0,"cumulative":192108},{"score":341,"count":0,"cumulative":193331},{"score":340,"count":0,"cumulative":194558},{"score":339,"count":0,"cumulative":195775},{"score":338,"count":0,"cumulative":197027},{"score":333,"count":0,"cumulative":203234},{"score":332,"count":0,"cumulative":204486},{"score":331,"count":0,"cumulative":205713},{"score":330,"count":0,"cumulative":206957},{"score":329,"count":0,"cumulative":208211},{"score":328,"count":0,"cumulative":209403},{"score":327,"count":0,"cumulative":210592},{"score":326,"count":0,"cumulative":211760},{"score":325,"count":0,"cumulative":213040},{"score":324,"count":0,"cumulative":214351},{"score":318,"count":0,"cumulative":221992},{"score":317,"count":0,"cumulative":223287},{"score":316,"count":0,"cumulative":224523},{"score":315,"count":0,"cumulative":225815},{"score":309,"count":0,"cumulative":233498},{"score":308,"count":0,"cumulative":234756},{"score":307,"count":0,"cumulative":236020},{"score":306,"count":0,"cumulative":237327},{"score":305,"count":0,"cumulative":238627},{"score":304,"count":0,"cumulative":239914},{"score":303,"count":0,"cumulative":241204},{"score":302,"count":0,"cumulative":242461},{"score":301,"count":0,"cumulative":243749},{"score":291,"count":0,"cumulative":256092},{"score":286,"count":0,"cumulative":262255},{"score":285,"count":0,"cumulative":263497},{"score":284,"count":0,"cumulative":264738},{"score":283,"count":0,"cumulative":265935},{"score":282,"count":0,"cumulative":267117},{"score":281,"count":0,"cumulative":268309},{"score":280,"count":0,"cumulative":269551},{"score":279,"count":0,"cumulative":270820},{"score":278,"count":0,"cumulative":272001},{"score":277,"count":0,"cumulative":273234},{"score":276,"count":0,"cumulative":274439},{"score":271,"count":0,"cumulative":280373},{"score":270,"count":0,"cumulative":281528},{"score":269,"count":0,"cumulative":282658},{"score":268,"count":0,"cumulative":283843},{"score":267,"count":0,"cumulative":284997},{"score":266,"count":0,"cumulative":286103},{"score":265,"count":0,"cumulative":287210},{"score":264,"count":0,"cumulative":288348},{"score":263,"count":0,"cumulative":289491},{"score":262,"count":0,"cumulative":290595},{"score":261,"count":0,"cumulative":291722},{"score":260,"count":0,"cumulative":292896},{"score":259,"count":0,"cumulative":294037},{"score":258,"count":0,"cumulative":295137},{"score":257,"count":0,"cumulative":296255},{"score":252,"count":0,"cumulative":301559},{"score":251,"count":0,"cumulative":302622},{"score":250,"count":0,"cumulative":303652},{"score":249,"count":0,"cumulative":304651},{"score":248,"count":0,"cumulative":305676},{"score":247,"count":0,"cumulative":306767},{"score":246,"count":0,"cumulative":307795},{"score":245,"count":0,"cumulative":308785},{"score":244,"count":0,"cumulative":309696},{"score":243,"count":0,"cumulative":310681},{"score":237,"count":0,"cumulative":316372},{"score":236,"count":0,"cumulative":317293},{"score":235,"count":0,"cumulative":318180},{"score":234,"count":0,"cumulative":319122},{"score":228,"count":0,"cumulative":324346},{"score":227,"count":0,"cumulative":325157},{"score":226,"count":0,"cumulative":325997},{"score":225,"count":0,"cumulative":326841},{"score":224,"count":0,"cumulative":327615},{"score":223,"count":0,"cumulative":328423},{"score":222,"count":0,"cumulative":329178},{"score":221,"count":0,"cumulative":329979},{"score":220,"count":0,"cumulative":330738},{"score":210,"count":0,"cumulative":337551},{"score":206,"count":0,"cumulative":340007},{"score":205,"count":0,"cumulative":340559},{"score":204,"count":0,"cumulative":341143},{"score":203,"count":0,"cumulative":341691},{"score":202,"count":0,"cumulative":342249},{"score":201,"count":0,"cumulative":342810},{"score":200,"count":0,"cumulative":343308}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"province":"hunan","province_name":"湖南","year":2024,"track":"history","source":"https://m.cs.bendibao.com/edu/121234.shtm","note":"湖南省2024年高考一分一段表(历史科目组合)。完整范围 654 至 600 分;本科线 463 分。","count":53,"rows":[{"score":654,"count":2,"cumulative":51},{"score":653,"count":4,"cumulative":55},{"score":652,"count":2,"cumulative":57},{"score":651,"count":8,"cumulative":65},{"score":650,"count":11,"cumulative":76},{"score":649,"count":6,"cumulative":82},{"score":648,"count":11,"cumulative":93},{"score":647,"count":8,"cumulative":101},{"score":646,"count":2,"cumulative":103},{"score":645,"count":9,"cumulative":112},{"score":644,"count":9,"cumulative":121},{"score":643,"count":11,"cumulative":132},{"score":642,"count":9,"cumulative":141},{"score":641,"count":9,"cumulative":150},{"score":640,"count":12,"cumulative":162},{"score":639,"count":25,"cumulative":187},{"score":638,"count":24,"cumulative":211},{"score":637,"count":15,"cumulative":226},{"score":636,"count":16,"cumulative":242},{"score":635,"count":20,"cumulative":262},{"score":634,"count":19,"cumulative":281},{"score":633,"count":16,"cumulative":297},{"score":632,"count":26,"cumulative":323},{"score":631,"count":34,"cumulative":357},{"score":630,"count":25,"cumulative":382},{"score":629,"count":17,"cumulative":399},{"score":628,"count":25,"cumulative":424},{"score":627,"count":29,"cumulative":453},{"score":626,"count":28,"cumulative":481},{"score":625,"count":35,"cumulative":516},{"score":624,"count":30,"cumulative":546},{"score":623,"count":49,"cumulative":595},{"score":622,"count":40,"cumulative":635},{"score":621,"count":31,"cumulative":666},{"score":620,"count":54,"cumulative":720},{"score":619,"count":47,"cumulative":767},{"score":618,"count":49,"cumulative":816},{"score":617,"count":45,"cumulative":861},{"score":616,"count":50,"cumulative":911},{"score":615,"count":41,"cumulative":952},{"score":614,"count":58,"cumulative":1010},{"score":613,"count":46,"cumulative":1056},{"score":612,"count":55,"cumulative":1111},{"score":611,"count":78,"cumulative":1189},{"score":610,"count":53,"cumulative":1242},{"score":609,"count":55,"cumulative":1297},{"score":608,"count":54,"cumulative":1351},{"score":607,"count":70,"cumulative":1421},{"score":606,"count":67,"cumulative":1488},{"score":605,"count":79,"cumulative":1567},{"score":604,"count":79,"cumulative":1646},{"score":603,"count":62,"cumulative":1708},{"score":602,"count":82,"cumulative":1790},{"score":601,"count":78,"cumulative":1868},{"score":600,"count":81,"cumulative":1949}]}
|
package/dist/aliases.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// Common Chinese-name contractions → canonical school names.
|
|
2
|
+
// Used by the `compare` and similar verbs to resolve fuzzy queries.
|
|
3
|
+
// (Substring/subsequence matching is too ambiguous for Chinese — e.g.
|
|
4
|
+
// "北大" is a substring of "西北大学", "南理工" matches "华南理工大学".)
|
|
5
|
+
export const SCHOOL_ALIASES = {
|
|
6
|
+
"清华": "清华大学",
|
|
7
|
+
"北大": "北京大学",
|
|
8
|
+
"复旦": "复旦大学",
|
|
9
|
+
"上交": "上海交通大学",
|
|
10
|
+
"上交大": "上海交通大学",
|
|
11
|
+
"浙大": "浙江大学",
|
|
12
|
+
"南大": "南京大学",
|
|
13
|
+
"中科大": "中国科学技术大学",
|
|
14
|
+
"科大": "中国科学技术大学",
|
|
15
|
+
"哈工大": "哈尔滨工业大学",
|
|
16
|
+
"西交": "西安交通大学",
|
|
17
|
+
"西交大": "西安交通大学",
|
|
18
|
+
"人大": "中国人民大学",
|
|
19
|
+
"北航": "北京航空航天大学",
|
|
20
|
+
"北理": "北京理工大学",
|
|
21
|
+
"北理工": "北京理工大学",
|
|
22
|
+
"北师大": "北京师范大学",
|
|
23
|
+
"中农大": "中国农业大学",
|
|
24
|
+
"农大": "中国农业大学",
|
|
25
|
+
"民大": "中央民族大学",
|
|
26
|
+
"南开": "南开大学",
|
|
27
|
+
"天大": "天津大学",
|
|
28
|
+
"大工": "大连理工大学",
|
|
29
|
+
"东北大": "东北大学",
|
|
30
|
+
"吉大": "吉林大学",
|
|
31
|
+
"同济": "同济大学",
|
|
32
|
+
"华东师大": "华东师范大学",
|
|
33
|
+
"华东师": "华东师范大学",
|
|
34
|
+
"东南": "东南大学",
|
|
35
|
+
"东南大": "东南大学",
|
|
36
|
+
"厦大": "厦门大学",
|
|
37
|
+
"山大": "山东大学",
|
|
38
|
+
"海大": "中国海洋大学",
|
|
39
|
+
"武大": "武汉大学",
|
|
40
|
+
"华科": "华中科技大学",
|
|
41
|
+
"华中大": "华中科技大学",
|
|
42
|
+
"中南大": "中南大学",
|
|
43
|
+
"中山大": "中山大学",
|
|
44
|
+
"华工": "华南理工大学",
|
|
45
|
+
"华南理": "华南理工大学",
|
|
46
|
+
"川大": "四川大学",
|
|
47
|
+
"重大": "重庆大学",
|
|
48
|
+
"电子科大": "电子科技大学",
|
|
49
|
+
"成电": "电子科技大学",
|
|
50
|
+
"西工大": "西北工业大学",
|
|
51
|
+
"西农": "西北农林科技大学",
|
|
52
|
+
"兰大": "兰州大学",
|
|
53
|
+
"湖大": "湖南大学",
|
|
54
|
+
"北邮": "北京邮电大学",
|
|
55
|
+
"北交": "北京交通大学",
|
|
56
|
+
"北科大": "北京科技大学",
|
|
57
|
+
"北化": "北京化工大学",
|
|
58
|
+
"北中医": "北京中医药大学",
|
|
59
|
+
"北外": "北京外国语大学",
|
|
60
|
+
"央财": "中央财经大学",
|
|
61
|
+
"贸大": "对外经济贸易大学",
|
|
62
|
+
"外经贸": "对外经济贸易大学",
|
|
63
|
+
"北林": "北京林业大学",
|
|
64
|
+
"首师大": "首都师范大学",
|
|
65
|
+
"上财": "上海财经大学",
|
|
66
|
+
"上外": "上海外国语大学",
|
|
67
|
+
"华理": "华东理工大学",
|
|
68
|
+
"华东理工": "华东理工大学",
|
|
69
|
+
"东华": "东华大学",
|
|
70
|
+
"上大": "上海大学",
|
|
71
|
+
"华政": "华东政法大学",
|
|
72
|
+
"西电": "西安电子科技大学",
|
|
73
|
+
"长安": "长安大学",
|
|
74
|
+
"陕师大": "陕西师范大学",
|
|
75
|
+
"西北大": "西北大学",
|
|
76
|
+
"西南交大": "西南交通大学",
|
|
77
|
+
"西财": "西南财经大学",
|
|
78
|
+
"西南财": "西南财经大学",
|
|
79
|
+
"武理": "武汉理工大学",
|
|
80
|
+
"华农": "华中农业大学",
|
|
81
|
+
"中南财": "中南财经政法大学",
|
|
82
|
+
"华中师": "华中师范大学",
|
|
83
|
+
"华中师大": "华中师范大学",
|
|
84
|
+
"苏大": "苏州大学",
|
|
85
|
+
"南理工": "南京理工大学",
|
|
86
|
+
"南航": "南京航空航天大学",
|
|
87
|
+
"河海": "河海大学",
|
|
88
|
+
"药大": "中国药科大学",
|
|
89
|
+
"南师": "南京师范大学",
|
|
90
|
+
"南师大": "南京师范大学",
|
|
91
|
+
"暨大": "暨南大学",
|
|
92
|
+
"深大": "深圳大学",
|
|
93
|
+
"南科": "南方科技大学",
|
|
94
|
+
"南科大": "南方科技大学",
|
|
95
|
+
"上科": "上海科技大学",
|
|
96
|
+
"上科大": "上海科技大学",
|
|
97
|
+
"央音": "中央音乐学院",
|
|
98
|
+
"央美": "中央美术学院",
|
|
99
|
+
"福大": "福州大学",
|
|
100
|
+
"郑大": "郑州大学",
|
|
101
|
+
"合工大": "合肥工业大学",
|
|
102
|
+
"华侨": "华侨大学",
|
|
103
|
+
"南昌大": "南昌大学",
|
|
104
|
+
"矿大": "中国矿业大学",
|
|
105
|
+
"国防科大": "国防科技大学",
|
|
106
|
+
"公安大": "中国人民公安大学",
|
|
107
|
+
"民航大": "中国民航大学",
|
|
108
|
+
"哈工程": "哈尔滨工程大学",
|
|
109
|
+
"华电": "华北电力大学",
|
|
110
|
+
"北工大": "北京工业大学",
|
|
111
|
+
"华南师": "华南师范大学",
|
|
112
|
+
"华南师大": "华南师范大学",
|
|
113
|
+
"华南农": "华南农业大学",
|
|
114
|
+
"西南大": "西南大学",
|
|
115
|
+
"西政": "西南政法大学",
|
|
116
|
+
"西南政法": "西南政法大学"
|
|
117
|
+
};
|
|
118
|
+
export function resolveAlias(query) {
|
|
119
|
+
return SCHOOL_ALIASES[query] ?? query;
|
|
120
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ProvinceId } from "./codes.js";
|
|
2
|
+
export type ChartProfile = {
|
|
3
|
+
score?: number;
|
|
4
|
+
rank?: number;
|
|
5
|
+
province?: string;
|
|
6
|
+
province_id?: ProvinceId;
|
|
7
|
+
subjects?: string[];
|
|
8
|
+
year?: number;
|
|
9
|
+
};
|
|
10
|
+
export type Check = {
|
|
11
|
+
check: string;
|
|
12
|
+
message: string;
|
|
13
|
+
};
|
|
14
|
+
export type ChartCheckResult = {
|
|
15
|
+
ok: boolean;
|
|
16
|
+
health: number;
|
|
17
|
+
errors: Check[];
|
|
18
|
+
warnings: Check[];
|
|
19
|
+
};
|
|
20
|
+
export declare function chartCheck(profile: ChartProfile): ChartCheckResult;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// chart-check — sanity-check a student profile before sending it into
|
|
2
|
+
// recommend / match. Validates score range, subject combo, rank-score
|
|
3
|
+
// consistency (against 一分一段表 if ingested), 选科 vs 新高考 reform,
|
|
4
|
+
// and completeness.
|
|
5
|
+
//
|
|
6
|
+
// Output: { ok, score 0-100, errors, warnings }
|
|
7
|
+
import { PROVINCES, ALL_SUBJECTS } from "./codes.js";
|
|
8
|
+
import { loadRankTable, scoreToRank, inferDefaultTrack } from "./rank-table.js";
|
|
9
|
+
import { inferTrack } from "./recommend.js";
|
|
10
|
+
// Provincial total-score max — extend as needed.
|
|
11
|
+
const PROVINCE_MAX = {
|
|
12
|
+
46: 900, // 海南 标准分
|
|
13
|
+
31: 660, // 上海
|
|
14
|
+
// everyone else defaults to 750
|
|
15
|
+
};
|
|
16
|
+
function maxScoreFor(id) {
|
|
17
|
+
return PROVINCE_MAX[id] ?? 750;
|
|
18
|
+
}
|
|
19
|
+
export function chartCheck(profile) {
|
|
20
|
+
const errors = [];
|
|
21
|
+
const warnings = [];
|
|
22
|
+
let health = 100;
|
|
23
|
+
// 1. completeness
|
|
24
|
+
if (!profile.province_id) {
|
|
25
|
+
errors.push({ check: "completeness", message: "missing province_id (caller must resolve via resolveProvince)" });
|
|
26
|
+
}
|
|
27
|
+
if (profile.score === undefined) {
|
|
28
|
+
errors.push({ check: "completeness", message: "missing score" });
|
|
29
|
+
}
|
|
30
|
+
if (!profile.subjects || profile.subjects.length === 0) {
|
|
31
|
+
errors.push({ check: "completeness", message: "missing subjects" });
|
|
32
|
+
}
|
|
33
|
+
if (errors.length > 0) {
|
|
34
|
+
return { ok: false, health: 0, errors, warnings };
|
|
35
|
+
}
|
|
36
|
+
const provinceId = profile.province_id;
|
|
37
|
+
const score = profile.score;
|
|
38
|
+
const subjects = profile.subjects;
|
|
39
|
+
// 2. score-in-range
|
|
40
|
+
const cap = maxScoreFor(provinceId);
|
|
41
|
+
if (score < 0 || score > cap) {
|
|
42
|
+
errors.push({ check: "score_range", message: `score ${score} out of ${PROVINCES[provinceId].name} range [0, ${cap}]` });
|
|
43
|
+
health -= 25;
|
|
44
|
+
}
|
|
45
|
+
else if (score < 200) {
|
|
46
|
+
warnings.push({ check: "score_range", message: `score ${score} 偏低, 可能信息有误` });
|
|
47
|
+
health -= 5;
|
|
48
|
+
}
|
|
49
|
+
// 3. subjects validity
|
|
50
|
+
for (const s of subjects) {
|
|
51
|
+
if (!ALL_SUBJECTS.includes(s)) {
|
|
52
|
+
errors.push({ check: "subjects", message: `unknown subject: ${s}` });
|
|
53
|
+
health -= 10;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const reform = PROVINCES[provinceId].reform;
|
|
57
|
+
if (reform === "3+1+2") {
|
|
58
|
+
if (!subjects.includes("物理") && !subjects.includes("历史")) {
|
|
59
|
+
errors.push({ check: "subjects", message: "3+1+2 省份必须含 物理 或 历史 (首选科目)" });
|
|
60
|
+
health -= 20;
|
|
61
|
+
}
|
|
62
|
+
if (subjects.includes("物理") && subjects.includes("历史")) {
|
|
63
|
+
warnings.push({ check: "subjects", message: "首选只能在 物理/历史 二者择一" });
|
|
64
|
+
health -= 5;
|
|
65
|
+
}
|
|
66
|
+
if (subjects.length !== 3) {
|
|
67
|
+
warnings.push({ check: "subjects", message: `3+1+2 应有 3 门选考, 当前 ${subjects.length}` });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (reform === "3+3") {
|
|
71
|
+
if (subjects.length !== 3) {
|
|
72
|
+
warnings.push({ check: "subjects", message: `3+3 应有 3 门选考, 当前 ${subjects.length}` });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// 4. rank-score consistency (when 一分一段 exists)
|
|
76
|
+
if (profile.rank !== undefined && profile.year !== undefined) {
|
|
77
|
+
const track = subjects.length > 0
|
|
78
|
+
? inferTrack(provinceId, subjects)
|
|
79
|
+
: inferDefaultTrack(provinceId);
|
|
80
|
+
const trackKey = track === "2073" ? "physics" : track === "2074" ? "history" : track === "3" ? "combined" : track === "1" ? "science" : track === "2" ? "liberal" : track;
|
|
81
|
+
const table = loadRankTable(provinceId, profile.year, trackKey);
|
|
82
|
+
if (table) {
|
|
83
|
+
const inferredRank = scoreToRank(table, score);
|
|
84
|
+
if (inferredRank && Math.abs(inferredRank - profile.rank) > Math.max(500, profile.rank * 0.1)) {
|
|
85
|
+
warnings.push({
|
|
86
|
+
check: "rank_score_consistency",
|
|
87
|
+
message: `score ${score} 在 ${PROVINCES[provinceId].name} ${profile.year} ${trackKey} 一分一段 推断位次 ≈ ${inferredRank}, 但你给的是 ${profile.rank} — 差距偏大`
|
|
88
|
+
});
|
|
89
|
+
health -= 8;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
ok: errors.length === 0,
|
|
95
|
+
health: Math.max(0, health),
|
|
96
|
+
errors,
|
|
97
|
+
warnings
|
|
98
|
+
};
|
|
99
|
+
}
|