Agent skill

Mica Ppocr Custom Parser

by lets-mica in lets-mica/mica-ppocr

在 mica-ppocr 项目中新增自定义结构化解析器(证件 / 票据 / 卡证 OCR → 业务字段)时加载本 skill。

Apache-2.0Auto-check passedBackend & APIs

Install Mica Ppocr Custom Parser

skills CLI
$ npx skills add lets-mica/mica-ppocr --skill mica-ppocr-custom-parser -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install lets-mica/mica-ppocr mica-ppocr-custom-parser --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/lets-mica/mica-ppocr.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/mica-ppocr-custom-parser .claude/skills/mica-ppocr-custom-parser && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
mica-ppocr-custom-parser
GitHub stars
110
Token cost
~3.1k tokens
SKILL.md length
626 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

在 mica-ppocr 项目中新增自定义结构化解析器(证件 / 票据 / 卡证 OCR → 业务字段)时加载本 skill。

  • Works in 10 steps: 何时用本 skill → 三层骨架先认清楚 → 新增一个解析器,5 步走 → …
  • Tasks that involve Backend development
  • SKILL.md covers 1. 何时用本 skill, 2. 三层骨架先认清楚, 3. 新增一个解析器,5 步走 and 4. 7 个常用模式(按场景选), plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Mica Ppocr Custom Parser is an agent skill from lets-mica/mica-ppocr. 在 mica-ppocr 项目中新增自定义结构化解析器(证件 / 票据 / 卡证 OCR → 业务字段)时加载本 skill。 覆盖从 BaseStructuredParser<R / BaseStructuredResult 继承、LabelMatcher 公共工具调用、 Spring Boot 自动配置注册、PPOcrTemplate 集成,到 BaseTest 可视化调试与单测的完整链路。 触发场景:用户说"加个 XX 证件 / 票据解析器"、"自定义结构化解析"、"怎么把 OCR 散落文字组织成字段"、 "新增一种证件 OCR"、"写个新的 parser / 解析器"、"新加一个卡证/营业执照/发票/收据 等结构化识别"、 "mica-ppocr 加新解析"、"解析器模板/模板解析"、"label-value 提取"。

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Backend development. It works with Spring Boot and Java. The repository describes itself as: PP-OCRv6 纯 Java 图片 OCR(ONNX Runtime,零 PaddlePaddle 依赖,bit-exact 对位 Python,Spring Boot Starter,结构化识别行驶证/身份证/银行卡/驾驶证/营业执照等). The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Backend development

Example prompts

  • “加个 XX 证件 / 票据解析器”
  • “自定义结构化解析”
  • “怎么把 OCR 散落文字组织成字段”
  • “/mica-ppocr-custom-parser”

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. 何时用本 skill
  2. 三层骨架先认清楚
  3. 新增一个解析器,5 步走
  4. 7 个常用模式(按场景选)
  5. 必须遵守的约定
  6. 调试 / 测试脚手架
  7. 完整最小可运行示例
  8. 现有参考实现索引(按复杂度排序)
  9. 反模式 / 常见坑
  10. 必读源码

What it can do on your machine

Read from SKILL.md and the folder at commit a7d496e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are java).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Mica Ppocr Custom Parser loads about 3.1k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 626 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~101
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from lets-mica/mica-ppocr at commit a7d496e, republished under its Apache-2.0 licence (© lets-mica). 626 words, ~3,127 tokens.

Download SKILL.mdSave it as .claude/skills/mica-ppocr-custom-parser/SKILL.md (or your agent's skills folder).
name
mica-ppocr-custom-parser
description
在 mica-ppocr 项目中新增自定义结构化解析器(证件 / 票据 / 卡证 OCR → 业务字段)时加载本 skill。 覆盖从 `BaseStructuredParser<R>` / `BaseStructuredResult` 继承、`LabelMatcher` 公共工具调用、 Spring Boot 自动配置注册、`PPOcrTemplate` 集成,到 `BaseTest` 可视化调试与单测的完整链路。 触发场景:用户说"加个 XX 证件 / 票据解析器"、"自定义结构化解析"、"怎么把 OCR 散落文字组织成字段"、 "新增一种证件 OCR"、"写个新的 parser / 解析器"、"新加一个卡证/营业执照/发票/收据 等结构化识别"、 "mica-ppocr 加新解析"、"解析器模板/模板解析"、"label-value 提取"。

mica-ppocr 自定义结构化解析器

把 PP-OCRv6 检测出的散落文字框(List<PPOcrV6Result>),按"标签定位 + 位置匹配 + 正则兜底"的策略, 组织成业务字段对象(继承 BaseStructuredResult 的 POJO)。

模块路径:mica-ppocr-structured/src/main/java/net/dreamlu/mica/ai/ppocr/structured/parser/


1. 何时用本 skill

用户提出以下任何需求时,先加载本 skill:

  • "加一个 XX 证件 / 票据 / 卡证的结构化解析"
  • "新加一个 parser,识别 XX 业务字段"
  • "把 OCR 散落文字组织成业务字段"
  • "在 mica-ppocr 里写个自定义解析器"
  • 看到 mica-ppocr-structured/.../parser/<new-biz>/ 这样的目录或被要求"参考 VehicleLicenseParser"

不要用本 skill 处理:

  • 纯 OCR 推理(不改字段)→ 走 PPOcrV6Engine 即可,不需要结构化层
  • 模型训练/字典扩充 → 走 PP-OCRv6 模型侧
  • 非 mica-ppocr 项目 → 不适用

2. 三层骨架先认清楚

层文件职责
基类(必须继承)core/BaseStructuredParser<R>持有 PPOcrV6Engine,5 个 parse(...) 一站式重载已 final 实现;子类只覆盖 parseResults(List<PPOcrV6Result>)
结果基类(必须继承)core/BaseStructuredResult提供 rawResults(原始 OCR 框)与 fieldBoxes(字段名 → 框坐标),Lombok @Data
公共工具(按需调用)core/LabelMatcher标签定位、位置匹配、正则兜底、合并框剥值、跨行拼接、互斥分配、几何工具 minX/maxX/minY/maxY

LabelMatcher 是 @UtilityClass 静态方法集合,不绑定任何具体业务,所有解析器共享同一套语义。


3. 新增一个解析器,5 步走

3.1 创建包

在 mica-ppocr-structured/src/main/java/net/dreamlu/mica/ai/ppocr/structured/parser/<biz>/ 下新增 2~3 个文件:

<biz>/
├── <Biz>Parser.java        # 继承 BaseStructuredParser<<Biz>Result>
├── <Biz>Result.java        # 继承 BaseStructuredResult
└── <Biz>Side.java          # 可选:有正反面/多版面时

包名小写 + 业务名(参考 vehicle/、idcard/、invoice/、train/)。

3.2 写 Result
java
@Data
@EqualsAndHashCode(callSuper = true)
public class InvoiceResult extends BaseStructuredResult {
    private String invoiceCode;     // 发票代码
    private String invoiceNo;       // 发票号码
    private String invoiceDate;     // 开票日期
    private BigDecimal amount;      // 价税合计
    // ... 业务字段
}

要点:

  • 必须 @Data + @EqualsAndHashCode(callSuper = true) —— rawResults 和 fieldBoxes 在父类
  • 字段名(key)要和后续 LabelMatcher.applyFieldBox(result, "fieldName", match) 一致
  • 业务字段值允许为 null(OCR 失败/字段缺失),不要用基本类型
3.3 写 Parser(核心)
java
@Slf4j
public class InvoiceParser extends BaseStructuredParser<InvoiceResult> {

    // 1) 正则常量(业务相关)
    private static final Pattern INVOICE_CODE_PATTERN = Pattern.compile("^\\d{8,12}$");

    public InvoiceParser(PPOcrV6Engine engine) {
        super(engine);  // engine 可为 null:仅当只调 parseResults(List) 时
    }

    @Override
    public InvoiceResult parseResults(List<PPOcrV6Result> results) {
        InvoiceResult r = new InvoiceResult();
        r.setRawResults(new ArrayList<>(results));  // 必填:供调用方做可视化

        // 2) 逐字段填值
        LabeledMatch codeMatch = parseInvoiceCode(results);
        r.setInvoiceCode(codeMatch.value());
        LabelMatcher.applyFieldBox(r, "invoiceCode", codeMatch);

        // ... 其他字段
        return r;
    }
}

模板四件套:

  1. 构造器接 PPOcrV6Engine,转给 super(engine)
  2. parseResults 入口:new Result → setRawResults(new ArrayList<>(results)) → 填字段 → return
  3. 每个字段返回 LabeledMatch(值 + 匹配框),用 LabelMatcher.applyFieldBox 回填 fieldBoxes
  4. 解析失败/未命中 → 字段值允许 null,打 log.warn(不要 System.out.println)
3.4 选 LabelMatcher 模式(按业务复杂度)
场景推荐方法备注
标准左标签 + 右值matchValueWithBox / matchValue默认走"右侧 y 重叠 + 最左"策略
标签与值合并到同一 OCR 框("发票代码12345678")matchValueFromPrefix / matchValueFromPrefixWithBox自动从合并框剥前缀
标签定位后,值要按正则再校验 + 不匹配时回退正则labelOrFallback / labelOrFallbackWithBoxfieldName 用于日志,last 控制首/末匹配
OCR 残缺标签("号牌号"少了"码")findLabelBox 内部已支持,无需特别调用完整等于 > 开头匹配 > 包含 fragment
票据类有合并框需要从文本中抠值matchSubstring / matchSubstringWithBox传 text -> 提取函数
标签被 OCR 切碎成 fragment("日期"→ "日")matchValueByLabelKeywordWithBox传关键字列表
多个 label 抢同一右侧值("金额/总金额"同行)assignExclusiveValues贪心最佳优先互斥分配
跨多行的字段(住址、经营范围)collectMultiLineRight按 y 升序拼接右侧 y 重叠框
几何位置兜底(无标签场景)minX/maxX/minY/maxY自己写规则(参考 BankCardParser#parseBankName)

返回风格选择:

  • 老代码/简单场景 → matchValue(...) -> String(一行搞定)
  • 新代码/需要回填 fieldBoxes → matchValueWithBox(...) -> LabeledMatch,后续 LabelMatcher.applyFieldBox(result, "fieldName", match)
3.5 注册到 Spring Boot(如果用户用了 starter)

在 mica-ppocr-spring-boot-starter/src/main/java/net/dreamlu/mica/ai/ppocr/autoconfigure/StructuredParserAutoConfiguration.java:

  1. 新增 @Bean(参考现有 8 个)
  2. 把它加到 ppocrTemplate(...) 方法签名 + 构造器调用 + null 校验里
  3. 在 PPOcrTemplate 同步新增:字段、@Getter 方法、构造器参数、null 校验

整套有 4 个文件要改(只要用户走 Spring Boot):

文件改动
StructuredParserAutoConfiguration.java新 @Bean,加进 ppocrTemplate 签名
PPOcrTemplate.java新字段 + getter + 构造器参数 + null 校验
解析器 Parser.java新文件
解析器 Result.java新文件

Solon / 非 Spring 用户只需前 2 个文件,自行 new XxxParser(engine) 即可。


4. 7 个常用模式(按场景选)

模式 A:标准左标签 + 右值(行驶证、驾驶证、营业执照)

参考:VehicleLicenseParser、DriverLicenseParser、BusinessLicenseParser

java
LabeledMatch m = LabelMatcher.matchValueWithBox(results, "号牌号码");
r.setPlateNo(m.value());
LabelMatcher.applyFieldBox(r, "plateNo", m);
模式 B:标签 + 正则兜底(身份证号、发票号、车牌)

参考:VehicleLicenseParser 的 plateNo/vin/issueDate

java
LabeledMatch m = LabelMatcher.labelOrFallbackWithBox(
    LabelMatcher.matchValueWithBox(results, "车辆识别代号"),
    results, VIN_PATTERN, "VIN", false /* last=false 取首个 */);
模式 C:纯正则兜底(无标签,卡号、手机号)

参考:BankCardParser#parseCardNumber、BankCardParser#parseHolderName

java
String cardNo = LabelMatcher.matchPattern(results, CARD_NUMBER_PATTERN, false);
模式 D:合并框剥值(OCR 把标签和值识别成一框)

参考:VehicleLicenseParser#parseIdNumber、InvoiceParser#findInvoiceCode

  • 合并框 "公民身份号码362503..." → 用 matchValueFromPrefix
  • 合并框 "No14641426" → 自己写 extractor:
java
String no = LabelMatcher.matchSubstring(results, text -> {
    if (!text.startsWith("No")) return null;
    Matcher m = INVOICE_NO_PATTERN.matcher(text.substring(2));
    return m.find() ? m.group() : null;
});
模式 E:跨行字段(住址、经营范围、备注)

参考:IdCardParser#parseAddress、LabelMatcher.collectMultiLineRight

要点:合并框首行 + 后续 y 重叠右侧框按 y 升序拼接,中间空格分隔,最后用 replaceAll("\\s+", "") 去噪。

模式 F:版面/区域判定(身份证正反面、发票购销方)

参考:IdCardParser#detectSide、InvoiceParser#parseParty(用 imgMidY 分上下半区)

java
// 1) 用特征标签判定(先反后正:反面字少,OCR 不易误识)
boolean isBack = LabelMatcher.findLabelBox(results, "签发机关") != null;
if (isBack) { ... }

// 2) 用 y 中位数分上下区
int imgMidY = computeImageMidY(results);
模式 G:多 label 互斥分配(金额行多 label 抢同一值)

参考:LabelMatcher.assignExclusiveValues、LabelMatcher.LabelDef

适用于"金额/总金额/小计"等 label 同行且都指向同一右侧值。


5. 必须遵守的约定

命名
  • 包名:单数业务名(vehicle / idcard / invoice / train / taxi / bankcard / driver / business)
  • 类名:<业务名 PascalCase>Parser / <业务名 PascalCase>Result / IdCardSide(多版面时)
  • 字段名:业务术语,首字母小写驼峰(plateNo / vin / issueDate / invoiceCode)
日志
  • 命中分支打 log.debug(不要 info,正常路径不打日志)
  • 失败/兜底打 log.warn("身份证解析:未匹配到身份证号")
  • 不要用 System.out.println / System.err.println
防御性
  • LabelMatcher.matchValueWithBox 返回的可能是 LabeledMatch.textOnly(null),先判 hasValue() 再用
  • 正则匹配优先 find()(应对合并框),全等校验才用 matches()
  • r.setRawResults(new ArrayList<>(results)) —— 必须用 new ArrayList 包一层,避免外部修改影响
Show full SKILL.md (247 more words)Show less
不可做
  • ❌ 不要覆盖 BaseStructuredParser#parse(...)(已 final)
  • ❌ 不要让 engine 在 parse(...) 调用时为 null(基类会 NPE)
  • ❌ 不要把 LabelMatcher 改成实例类(它是 @UtilityClass)
  • ❌ 不要在 Result 用基本类型(int → Integer,BigDecimal 可以,double 不行)
  • ❌ 不要在 Result 字段上加业务校验注解(保持 POJO 干净,校验放业务层)
License header

每个新文件第一行要带:

java
/*
 * Copyright (c) 2019-2026, dreamlu.net All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * ... (省略,完整模板见项目其它文件)
 */

6. 调试 / 测试脚手架

6.1 写一个 BaseTest 子类(30 行跑通 demo)

参考 src/test/java/.../parser/vehicle/VehicleLicenseMain.java:

java
public class MyBizMain extends BaseTest<MyBizParser, MyBizResult> {

    private static final String IMAGE_PATH = "test_images/mybiz/sample1.png";
    private static final String VIS_PATH   = "test_images/mybiz/vis.png";

    public static void main(String[] args) {
        new MyBizMain().demo(IMAGE_PATH, VIS_PATH);
    }

    @Override protected MyBizParser newParser(PPOcrV6Engine engine) {
        return new MyBizParser(engine);
    }

    @Override protected void printResult(MyBizResult r) {
        System.out.println("fieldA: " + r.getFieldA());
        // ...
    }
}

跑 demo:直接 IDE 跑 main,会打印所有 OCR 框 + 解析结果 + 可视化 PNG。

6.2 写 JUnit 单测(不依赖模型)

参考 src/test/java/.../parser/core/LabelMatcherTest.java、各 ParserTest.java:

  • 用 mock 构造 List<PPOcrV6Result>(框坐标 + 文本 + score)
  • 验证 parseResults 返回的字段值
  • 不需要真模型,跑得快,CI 友好
6.3 调试技巧
  • logback-test.xml 设 level=DEBUG,看 LabelMatcher 的 [DEBUG-FIND] / 结构化解析: 日志
  • result.getRawResults() 在测试里 dump 出来,人工对照看每个框
  • result.getFieldBoxes() 在 demo 里画框,验证框是否落在正确字段上

7. 完整最小可运行示例

java
// MyBizResult.java
@Data
@EqualsAndHashCode(callSuper = true)
public class MyBizResult extends BaseStructuredResult {
    private String title;     // 业务标题
    private String code;      // 业务编码
    private String date;      // 业务日期
}

// MyBizParser.java
@Slf4j
public class MyBizParser extends BaseStructuredParser<MyBizResult> {

    private static final Pattern CODE_PATTERN = Pattern.compile("[A-Z]{2}\\d{6}");
    private static final Pattern DATE_PATTERN = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");

    public MyBizParser(PPOcrV6Engine engine) {
        super(engine);
    }

    @Override
    public MyBizResult parseResults(List<PPOcrV6Result> results) {
        MyBizResult r = new MyBizResult();
        r.setRawResults(new ArrayList<>(results));

        // 标题:纯标签
        LabeledMatch title = LabelMatcher.matchValueWithBox(results, "标题");
        r.setTitle(title.value());
        LabelMatcher.applyFieldBox(r, "title", title);

        // 编码:标签 + 正则兜底
        LabeledMatch code = LabelMatcher.labelOrFallbackWithBox(
            LabelMatcher.matchValueWithBox(results, "编码"),
            results, CODE_PATTERN, "编码", false);
        r.setCode(code.value());
        LabelMatcher.applyFieldBox(r, "code", code);

        // 日期:正则兜底
        r.setDate(LabelMatcher.matchPattern(results, DATE_PATTERN, false));

        return r;
    }
}

启动期注册到 Spring Boot → 见 §3.5。


8. 现有参考实现索引(按复杂度排序)

解析器难度演示模式关键技巧
BankCardParser⭐纯正则 + 位置兜底英文标签黑名单、底部 y 过滤、卡号去空格
DriverLicenseParser⭐⭐标准左标签 + 右值驾照字段比行驶证多一项
VehicleLicenseParser⭐⭐标准 + 兜底链labelOrFallback + 子串搜索 + 版面布局兜底
IdCardParser⭐⭐⭐双版面 + 合并框detectSide、cutAtNextLabel、跨行地址
BusinessLicenseParser⭐⭐⭐多行字段 + 区域过滤collectMultiLineRight、findCleanLabelBox
TaxiReceiptParser⭐⭐⭐⭐票据版式碎片化keyword 定位、底部正则兜底、金额行多 label 互斥
TrainTicketParser⭐⭐⭐⭐票据版式碎片化合并框切日期+时间、票号正则、噪声黑名单
InvoiceParser⭐⭐⭐⭐⭐复杂版面(购销双方/明细表/合计)y 中位数分上下、fragment + 续段合并框、4 字段同模板

入门先看 BankCardParser;做卡证看 VehicleLicenseParser / IdCardParser;做票据看 TrainTicketParser / TaxiReceiptParser;做发票看 InvoiceParser。


9. 反模式 / 常见坑

坑后果怎么避
直接 r.text().equals(label) 找标签OCR 残缺("号牌号"缺"码")会漏匹配用 LabelMatcher.findLabelBox(已支持 fragment)
自己遍历 r.text() 写最近距离匹配同行多个 label 都选到同一值金额/票号类用 assignExclusiveValues
跨行字段只取首个 y 重叠框漏掉第二/三行用 collectMultiLineRight 或自己写 y 升序拼接
用 r.text().matches() 匹配合并框整框不匹配 → 漏识别改用 find() 或写 extractor
Result 字段没加 @EqualsAndHashCode(callSuper = true)Lombok 不生成 equals 用父类,反序列化可能丢 rawResults必加
忘记 r.setRawResults(...)调用方拿到空 rawResults,无法做可视化入口第一行就 set
兜底分支没打 log调试时不知道走了哪条路径每个兜底命中打 log.debug,失败打 log.warn
Spring 注册时漏改 PPOcrTemplate启动报 BankCardParser must not be null4 个文件同步改(autoConfig + Template + Parser + Result)

10. 必读源码

  • core/BaseStructuredParser.java —— SPI 基类,5 个 parse(...) 重载 + parseResults 抽象方法
  • core/BaseStructuredResult.java —— rawResults + fieldBoxes 通用能力
  • core/LabelMatcher.java —— 700+ 行工具,涵盖 12+ 种匹配场景,写解析器前先扫一遍注释找匹配场景

写代码时 LabelMatcher 的 JavaDoc 是最权威的 API 文档,优先看它而不是猜。

© lets-mica, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/mica-ppocr-custom-parser of lets-mica/mica-ppocr.

Open the folder on GitHubat commit a7d496e

Compare with similar skills

Mica Ppocr Custom Parser next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Mica Ppocr Custom Parser compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Mica Ppocr Custom Parser this skilllets-mica/mica-ppocr110—~3.1kAutomated safety check: PassApache-2.0
Spring Bootpiomin/claude-ai-spring-boot1.3k—~2kAutomated safety check: PassApache-2.0
Dr Jskilljdubois/dr-jskill342—~4.6kAutomated safety check: NotesApache-2.0
WxJava Integration Guidebinarywang/WxJava33k—~123Automated safety check: PassApache-2.0
Flycms Devsunkaifei/FlyCms656—~827Automated safety check: PassMIT
Intelliconnect Service Styleruanrongman/IntelliConnect147—~2.4kAutomated safety check: PassApache-2.0

Similar skills

  • Spring Boot

    piomin/claude-ai-spring-boot

    Spring Boot 3.x development - REST APIs, JPA, Security, Testing, and Cloud-native patterns.

    1.3k GitHub stars~2k tokensUpdated 5 mo ago
    Backend & APIsAuto-check passed
  • Dr Jskill

    jdubois/dr-jskill

    Creates Java + Spring Boot projects: Web applications, full-stack apps with Vue.js or Angular or React or vanilla JS, PostgreSQL, REST APIs, and Docker.

    342 GitHub stars~4.6k tokensUpdated 9 days ago
    Backend & APIsAuto-check: notes
  • WxJava Integration Guide

    binarywang/WxJava

    Plans a WxJava setup for Java, Spring Boot or Solon projects that call WeChat services, from module and BOM choice to config and a minimal working call.

    33k GitHub stars~123 tokensUpdated today
    Backend & APIsAuto-check passed
  • Flycms Dev

    sunkaifei/FlyCms

    FlyCms 项目(backend/ Spring Boot 4.1.1 + frontend/ vue-vben-admin v5)的架构地图与开发规范总纲。凡在本仓库做任何开发——写后端接口、新增/修改模块、管理页面、数据库变更、修 bug、重构——都要先加载本 skill 再动手,即使用户只说"改一下""加个功能";前端登录/菜单/权限专项另见…

    656 GitHub stars~827 tokensUpdated today
    Backend & APIsAuto-check passed
  • Intelliconnect Service Style

    ruanrongman/IntelliConnect

    Create or update IntelliConnect Spring Boot service/serviceimpl code in this repository style.

    147 GitHub stars~2.4k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Java Coding Standards

    Snailclimb/AIGuide

    Java/Spring Boot 编码规范:用于编写、审查、重构和讲解 Java 代码。适用于 Java 风格、Spring Boot 架构、Controller/Service/Manager/DAO 分层、API 边界、Entity/VO/Form/DTO/BO 设计、MyBatis/MyBatis-Plus 持久化、事务、异常、日志、安全、性能、测试和 Java 代码评审等场景。默认结合…

    673 GitHub stars~1k tokensUpdated 3 mo ago
    Backend & APIsAuto-check passed

More from lets-mica/mica-ppocr

  • OCR Parser Optimizer

    lets-mica/mica-ppocr

    Optimizes mica-ppocr Java parsers via batch run, failure diagnosis, and LabelMatcher/regex fixes.

    110 GitHub stars~3.2k tokensUpdated today
    Auto-check passed

Works with

Questions about Mica Ppocr Custom Parser

What does Mica Ppocr Custom Parser do?

在 mica-ppocr 项目中新增自定义结构化解析器(证件 / 票据 / 卡证 OCR → 业务字段)时加载本 skill。. Mica Ppocr Custom Parser is an agent skill from lets-mica/mica-ppocr.

When should I use Mica Ppocr Custom Parser?

Mica Ppocr Custom Parser fits situations like: tasks that involve Backend development.

How do I install Mica Ppocr Custom Parser in Claude Code?

Run `npx skills add lets-mica/mica-ppocr --skill mica-ppocr-custom-parser -a claude-code`. Or copy the skill folder (.agents/skills/mica-ppocr-custom-parser in lets-mica/mica-ppocr) into .claude/skills/mica-ppocr-custom-parser in your project. Claude Code loads it when a task matches its description.

How do I install Mica Ppocr Custom Parser in Codex?

Run `npx skills add lets-mica/mica-ppocr --skill mica-ppocr-custom-parser -a codex`. Or copy the skill folder (.agents/skills/mica-ppocr-custom-parser in lets-mica/mica-ppocr) into .agents/skills/mica-ppocr-custom-parser in your project. Codex loads it when a task matches its description.

Can I use Mica Ppocr Custom Parser in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add lets-mica/mica-ppocr --skill mica-ppocr-custom-parser -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mica-ppocr-custom-parser, .gemini/skills/mica-ppocr-custom-parser, .github/skills/mica-ppocr-custom-parser and .opencode/skills/mica-ppocr-custom-parser in your project.

What does Mica Ppocr Custom Parser need to run?

SKILL.md names no scripts, command-line tools or credentials: Mica Ppocr Custom Parser is instructions for the agent only.

Does Mica Ppocr Custom Parser access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Mica Ppocr Custom Parser safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Mica Ppocr Custom Parser use?

Mica Ppocr Custom Parser is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Mica Ppocr Custom Parser use?

About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Mica Ppocr Custom Parser?

Skills that share tags, products or a category with Mica Ppocr Custom Parser: Spring Boot (piomin/claude-ai-spring-boot, 1.3k stars), Dr Jskill (jdubois/dr-jskill, 342 stars), WxJava Integration Guide (binarywang/WxJava, 33k stars) and Flycms Dev (sunkaifei/FlyCms, 656 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Mica Ppocr Custom Parser?

lets-mica (a GitHub organization) maintains it in lets-mica/mica-ppocr, which has 110 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 8, 2026.

Source: lets-mica/mica-ppocr on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.