快递识别api服务发布 部署教程(识别 人名、电话、地址、省市区县等)

文章描述了一位开发者为满足项目需求,通过自己编写Java代码创建了一个面单识别API,以解决使用付费API速度慢和解析准确性不足的问题,分享了如何部署和使用该服务的过程。
摘要由CSDN通过智能技术生成

最近遇到一个项目需求,需要自动化识别快递面单上的人名、电话、地址、邮编等信息。查询了很多方案,都不太满意。
调研了使用付费api,如快递100和百度的api等。最大的问题是速度不行,本项目每天要识别上百万的面单信息,api接口速度跟不上。其次是各家解析的正确率也达不到预期。
于是乎,人生苦短,不服就干,自己写了一个java版的面单识别算法。

上干货,如何部署自己的面单识别api接口

public class OrderParserServer {
    static Gson gson = new Gson();
    static AddressRecognition recog = new AddressRecognition();


    public static void main(String[] args) throws Exception {
        recog.addName("两只蝴蝶");
        recog.addName("打工人打工魂");

        HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
        server.createContext("/order", new MyHandler());
        server.setExecutor(null);
        System.out.println("Starting server on port: 8000");
        server.start();
//        Thread.sleep(100000);
//        server.stop(1);
    }

    static class MyHandler implements HttpHandler {
        public void handle(HttpExchange t) throws IOException {
            String response = "{\"response\":\"快递订单解析错误\"}";

            String parmsStr = t.getRequestURI().getQuery();
            if(!parmsStr.isEmpty()){
                String[] parms = parmsStr.split("&");
                if(parms.length>0){
                    HashMap<String,String> keys = new HashMap<>();
                    for (String urlKey:parms){
                        if(urlKey.contains("=")){
                            String[] kv = urlKey.split("=");
                            keys.put(kv[0].toLowerCase(),kv[1]);
                        }
                    }
                    if(keys.containsKey("orderinfo")){
//                        System.out.println(keys);
                        response = gson.toJson(recog.recognition(keys.get("orderinfo")));


                    }
                }
            }
            

            t.getResponseHeaders().set("Content-Type", "application/json");
            t.sendResponseHeaders(200, 0);
            OutputStream os = t.getResponseBody();
            byte[] b = response.getBytes();
            for (int i = 0; i < b.length; i++) {
                os.write(b[i]);
            }
            os.close();
        }
    }
    
}

直接在服务器上,使用jar命令运行这个OrderParserServer类就可以啦!

看效果

http://localhost:8000/order?orderinfo=汉阳区北京路常青花园92单元101

浏览器返回结果

{
    "address": "汉阳区北京路常青花园9栋2单元101室",
    "province": "湖北省",
    "phone": "15398768765",
    "city": "武汉市",
    "detail_address": "北京路常青花园9栋2单元101室",
    "name": "张丽丽",
    "county": "汉阳区"
}

java资源下载
https://download.csdn.net/download/u011024436/89035851
源码学习(查看OrderParserServer类)
https://gitee.com/addresstool/address

使用中有问题或者建议,欢迎联系邮箱addresstool@163.com

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

addresstool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值