29 Commits

Author SHA1 Message Date
f27a8b912a 修正子程序调用:用RunSpAsync传Dictionary参数,窗口不关闭
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 09:02:16 +08:00
c6bf0cdf56 处理完成后调用子程序over,传参files为输出路径
去掉"是否打开文件夹"对话框,改为设置Quicker变量
files=输出文件路径、over=true,然后关闭窗口。
ScannerForm构造函数接收IStepContext用于变量传递。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 08:54:01 +08:00
3db5e9f6f7 增强边缘阴影扫描:容忍跳过5个亮像素、阈值65%、深度1/3
之前遇到一个亮像素就停止,阴影中夹杂的稍亮像素会打断扫描。
改为允许跳过最多5个亮像素继续扫描,记录最后一个暗像素位置,
把从边缘到该位置的所有像素都设为白色。
阈值从60%提到65%,扫描深度从1/4加到1/3。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 08:46:39 +08:00
cf7e667733 新增边缘阴影清除:从四边向内扫描暗像素区域推白
除法归一化对均匀阴影免疫,但边缘深色阴影的bg也被拉低,
除法后比值偏低变灰色。在最终LUT之后加入边缘扫描:
从上下左右四边向内逐列/行扫描原始灰度,低于纸面亮度60%
的连续暗像素设为纯白,遇到亮像素停止。最大扫描深度1/4。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 08:44:09 +08:00
b150536858 修复文字淡:gamma加到2.5+范围150,白底清理改用LUT分段映射
之前Trunc+拉伸会把文字也放大变淡。改用LUT分段映射:
- <60:保持原值(文字深黑不变)
- 60-150:平滑过渡到255(灰色渐变区域推白)
- >150:纯白(背景)
文字不被拉伸,背景变纯白。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 08:41:26 +08:00
0ddef2fc7c 修复文字变淡:白底阈值从120调到160,避免误伤文字
120太低把浅色文字也推白了。160在文字(0-80)和背景(150-200)
之间,只清理背景灰色不影响文字。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 08:39:21 +08:00
82902e1a30 修复灰底色:白底清理阈值从230降到120
gamma+线性拉伸后背景像素在140-200范围,之前阈值230根本
触发不到。降到120后,所有>120的像素被线性拉伸到255,
背景变纯白,文字(<120)不受影响。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 08:37:08 +08:00
9a7a367a4f UI优化:改名文档扫描王、去掉质量选项、预览放大、智能文件名
- 软件名称改为"文档扫描王"
- 去掉JPEG质量选项,改用PNG无损写入PDF
- 预览区域从685x190放大到710x440
- 窗口高度从600增到820
- 输出文件名:图片输入→时间戳.pdf,PDF输入→modify_原名.pdf
- 删除GetJpegCodec等不再需要的代码

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 23:50:12 +08:00
38ce8627a5 综合优化:gamma=2.2保留层次 + 输出范围压到0-200加深文字
gamma从2.5降到2.2(避免过度压暗糊成团),同时把输出范围
从0-255压缩到0-200,等效于整体加深20%,文字更黑但笔画
间灰度差异按比例保留。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:29:40 +08:00
b99ec63306 修复文字糊成一团:用gamma曲线代替线性分段LUT
线性分段把0-210全压到0-30,笔画间灰度差异丢失导致糊成墨团。
改用gamma=2.5的幂曲线,文字整体变黑但保留笔画间的灰度渐变,
文字清晰可辨。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:25:43 +08:00
c51bbc18e8 再次加深文字:分界点210,文字映射上限30,接近扫描全能王效果
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:23:48 +08:00
c4f23e1ac3 加深文字:LUT分界点从180提到200,文字映射上限从80降到50
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:20:56 +08:00
bbc61c935a 彻底重写:回到高斯模糊+除法归一化,天然免疫阴影
减法方案(bg-gray)的根本缺陷:阴影处bg被远处亮区域拉高,
差值大,阴影变黑。形态学闭运算核大小两难无解。

除法方案(gray/bg*255)天然免疫阴影:
- 阴影处gray和bg同比例变暗,比值≈1,结果≈255(白色)
- 文字处gray<bg,比值<1,结果<255(偏暗)
- 背景处gray≈bg,比值≈1,结果≈255(白色)

用LUT分段映射增强对比度:0-180压暗(文字变黑),
180-255拉亮(背景变白)。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:19:36 +08:00
487a4d5c05 修复大片底色:加大形态学闭运算等效核尺寸
单次小核(图像/25)闭运算不够大,文字密集区域背景估计被文字
拉低产生灰色底色。改为41x41核多次迭代(3-N次),等效核尺寸
远大于文字行间距,确保背景估计不被文字污染。
后续高斯模糊也加大消除块状伪影。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:17:28 +08:00
436c02d2a7 彻底重写增强方法:用形态学闭运算替代高斯模糊做背景估计
之前所有阴影后处理方案都会误伤文字,根本原因是高斯模糊
做背景估计时会把远处亮区域扩散到阴影处,导致阴影处bg-gray
差值大,被当成墨迹变黑。

改用morphologyEx(CLOSE)做背景估计:闭运算=先膨胀后腐蚀,
只保留局部最亮值作为背景,不会跨区域扩散。阴影区域的背景
估计也低,bg-gray差值自然小,阴影不会变黑。

删除所有阴影后处理代码(方差检测、条带检测、形态学掩码),
代码从1240行精简到1048行。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:15:00 +08:00
ed205c4f04 修复阴影区域文字被模糊:改用墨迹强度判断代替方差
阴影区域内文字的局部方差被暗背景拉低导致误判。
改为直接看墨迹强度(inkData):>40说明有明显文字笔画保留,
<40说明是阴影背景推白。墨迹强度不受背景亮度影响。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:11:43 +08:00
3f30a9e79d 替换边缘扫描为形态学大面积暗区域检测
边缘扫描只能处理从边缘开始的连续暗像素,无法处理折角三角形
阴影等不规则形状。改用形态学方法:
1. 灰度二值化找所有暗像素(<纸面亮度65%)
2. 大核腐蚀去掉文字笔画(小面积暗区域)
3. 膨胀回来得到大面积阴影掩码
4. 掩码内低方差像素推白,高方差像素(文字)保留

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:09:12 +08:00
f17fd5cb85 新增条带状折痕检测:按列/行投影识别窄条暗带
深色窄折痕的边缘方差高(亮暗跳变),双级方差检测不到。
新增条带检测:按列/行统计暗像素比例,超过40%的列/行
标记为折痕条带,条带内低方差像素推白,高方差像素(文字)保留。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:06:01 +08:00
473eeb6e53 优化折痕检测:双级方差保护文字
单级方差核(15)太大,折痕附近的文字方差被稀释导致误伤。
改为双级方差:
- 小核(7):精确检测文字笔画高频特征,>=5即保护
- 大核(31):检测折痕低频渐变,<12才触发抑制
两级方差都低时才判定为折痕,大幅减少文字误伤。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 17:03:34 +08:00
c62db4af45 重写折痕/阴影检测:用局部方差区分文字和折痕
放弃基于背景亮度阈值的方案(会误伤折痕附近的文字)。
改用频域特征区分:
- 文字 = 高频信号,笔画边缘锐利,局部灰度方差高
- 折痕/阴影 = 低频信号,缓慢渐变,局部灰度方差低
计算灰度图的局部方差(|gray-localMean|的局部均值),
低方差+有墨迹的像素判定为折痕/阴影,按方差比例推向白色。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:56:02 +08:00
ffbfa18308 增强阴影/折痕抑制:提高触发阈值+双重检测+平滑过渡
1. 抑制起始阈值从75%提高到92%,折痕处也能触发
2. 用三次Hermite曲线(smoothstep)平滑过渡,避免硬边
3. 新增灰度+墨迹比例双重检测:原始灰度很暗但墨迹占比小的
   像素判定为阴影/折痕而非文字,额外抑制90%

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:53:04 +08:00
c8ef4ac933 修复折痕/阴影变纯黑:在墨迹映射中加入背景亮度抑制
折痕处背景估计被拉低但bg-gray差值仍大,被误判为深墨迹。
现在通过比较背景估计值与纸面中心亮度的比值来判断:
背景低于纸面亮度75%时开始抑制墨迹输出(平方衰减),
越暗的区域抑制越强,阴影/折痕变浅灰或白色而非纯黑。
同时保留边缘扫描法处理四周连续暗边框。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:50:58 +08:00
1eada92ca0 重写阴影处理:改为边缘扫描法,只处理四周边缘阴影
OTSU全局阈值会把文字密集区域误判为阴影。改为从图像四边向内
逐列/逐行扫描,遇到连续暗像素(低于纸面亮度55%)标记为阴影,
遇到亮像素立即停止。这样只会处理边缘连续暗区域,不会误伤
文档中间的文字。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:44:21 +08:00
3075dcb012 重写阴影处理:改为后处理阶段,用区域级检测避免误伤文字
不再在墨迹提取循环中逐像素判断阴影(容易误判文字为阴影导致空心字),
改为先正常处理所有像素,最后用大核模糊的原始灰度图+OTSU自动阈值
生成阴影掩码,区域级地把阴影覆盖为白色。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:39:48 +08:00
a65c86bb24 改进阴影检测:用原始灰度值判断而非仅依赖背景估计
背景估计受大核模糊影响,阴影处的值可能被周围亮区域拉高。
改为同时检测原始灰度和背景估计,低于中位数45%/50%的区域
识别为阴影,并用渐变过渡避免硬边。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:36:56 +08:00
2dcfcda850 修复文档边缘阴影变纯黑的问题
通过背景亮度中位数计算阴影阈值,背景估计值低于中位数60%的区域
识别为拍照阴影,直接输出白色而非当作墨迹处理成黑色。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:34:37 +08:00
7352f55e9e 初次完美版
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 16:33:38 +08:00
28847c0a62 Add .gitignore 2026-03-19 14:43:04 +08:00
af37c2e1e8 Initial commit 2026-03-19 14:43:04 +08:00