Chinaunix首页 | 论坛 | 博客
  • 博客访问: 55033
  • 博文数量: 2
  • 博客积分: 1100
  • 博客等级: 少尉
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-30 17:18
文章分类
文章存档

2026年(1)

2011年(1)

我的朋友

分类: 敏捷开发

2026-06-05 08:41:59

/*
1、程序的作用是识别图片内的文字。
2、以图片文字重命名文件。
3、并把图片重新输出为pdf文件。
*/
package
main

import (
    "fmt"
    "log"
    "os"
    "path"
    "path/filepath"
    "regexp"
    "slices"
    "strings"

    "github.com/doraemonkeys/paddleocr"
    "github.com/pdfcpu/pdfcpu/pkg/api"
    "github.com/sqweek/dialog"
)

// 解析图片
func ParseOcrImage(imagePath string) (Data []paddleocr.Data) {
    // 创建PaddleOCR实例
    p, err := paddleocr.NewPpocr(`paddle\PaddleOCR-json.exe`,
        paddleocr.OcrArgs{})
    if err != nil {
        panic(err)
    }
    defer p.Close()
    result, err := p.OcrFileAndParse(imagePath)
    if err != nil {
        panic(err)
    }
    if result.Code != paddleocr.CodeSuccess {
        fmt.Println("orc failed:", result.Msg)
        return
    }
    // 处理结果
    return result.Data
}
func SearchString(str string) (companyName string) {
    reg := regexp.MustCompile(`收货单位:(.*)|购货单位:(.*)`)
    companyName = reg.FindString(str)
    return companyName
}
func NewFile(OldName, newName string, i int64) {
    newName = strings.ReplaceAll(strings.Split(newName, ":")[1], " ", "")
    if newName != "" {
        newName = fmt.Sprintf("%s\\%s%d.jpg", filepath.Dir(OldName), newName, i)
        err := os.Rename(OldName, newName)
        if err != nil {
            fmt.Println(err)
        }
    }
    // newName = filepath.Dir(OldName) + `\` + strings.Split(newName, ":")[1] + strconv.FormatInt(i, 10) + ".jpg"

}
func Rename(filePathName string, rightNum int64) bool {
    data := ParseOcrImage(filePathName)
    for _, v := range data {
        companyName := SearchString(v.Text)
        if companyName != "" {
            NewFile(filePathName, companyName, rightNum)
            return true
        }
    }
    return false
}

func imageToPdf() {
    var images = []string{}
    dirEntry, err := os.ReadDir("./")
    if err != nil {
        log.Println(err)
        return
    }
    for _, entry := range dirEntry {
        if path.Ext(entry.Name()) == ".png" || path.Ext(entry.Name()) == ".jpg" || path.Ext(entry.Name()) == ".jpeg" || path.Ext(entry.Name()) == ".gif" {
            images = append(images, entry.Name())
        }
    }
    slices.Sort(images)
    api.ImportImagesFile(images, "output.pdf", nil, nil)
    dialog.Message("提示:%s", "PDF转换完成").Title("提示").Info()
}
func main() {
    /*
        1、遍历目录更改文件名称
        2、针对文件名称进行分类
        3、把文件进行转存成pdf文件
    */
    dirEntry, err := os.ReadDir("./")
    if err != nil {
        log.Println(err)
        return
    }
    var n int64 = 1
    for _, entry := range dirEntry {
        if path.Ext(entry.Name()) == ".png" || path.Ext(entry.Name()) == ".jpg" || path.Ext(entry.Name()) == ".jpeg" || path.Ext(entry.Name()) == ".gif" {
            absName, err := filepath.Abs(entry.Name())
            if err != nil {
                log.Println(err)
                return
            }
            Rename(absName, n)
            n++
        }
    }
    imageToPdf()
}

阅读(6) | 评论(0) | 转发(0) |
0

上一篇:博客已升级,请注意变更地址

下一篇:没有了

给主人留下些什么吧!~~