吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2676|回复: 38
上一主题 下一主题
收起左侧

[Python 原创] 自动识别手写文字进行批量重命名pdf文件

  [复制链接]
跳转到指定楼层
楼主
lijin671 发表于 2023-11-27 11:40 回帖奖励
本帖最后由 lijin671 于 2024-3-27 10:04 编辑
    import os
    from aip import AipOcr
    import base64
    import urllib
    import requests

    # Poppler 路径
                    poppler_path = r'D:\project\pythonProject\poppler23.11.0\Library\bin'
    # 初始化百度OCR
    APP_ID = 'your_app_id' #替换成你的app_id
    API_KEY = 'your_api_key' #替换成你的api_key
    SECRET_KEY = 'your_secret_key' #替换成你的secret_key
    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

    def main():
url = "https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting?access_token=" + get_access_token()

# PDF 文件夹路径
pdf_path = './'
for filename in os.listdir(pdf_path):
    if filename.endswith('.pdf'):
        pdf_folder = os.path.join(pdf_path, filename)
        pdf_base64 = get_file_content_as_base64(pdf_folder, True)
        payload = f'pdf_file={pdf_base64}&detect_direction=false&probability=false'
        headers = {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Accept': 'application/json'
         }

        response = requests.request("POST", url, headers=headers, data=payload)

        if response.status_code == 200:
            result = response.json()
            if 'words_result' in result:
                text = result['words_result'][8]['words']
                # 根据识别的文字进行文件重命名等操作
                # 这里可以根据具体的识别结果进行相应的处理,例如提取姓名后进行文件重命名等操作
                print(f"识别到的文字为:{text}")
                file_path, file_ext = os.path.splitext(pdf_folder)
                new_file_path = f"{text}" + file_ext
                os.rename(pdf_folder, new_file_path)
                print(f"文件已重命名为:{new_file_path}")
            else:
                print("未能识别到文字")
        else:
            print(f"请求失败: {response.text}")

    def get_file_content_as_base64(path, urlencoded=False):
"""
获取文件base64编码
:param path: 文件路径
:param urlencoded: 是否对结果进行urlencoded
:return: base64编码信息
"""
with open(path, "rb") as f:
    content = base64.b64encode(f.read()).decode("utf8")
    if urlencoded:
        content = urllib.parse.quote_plus(content)
return content

    def get_access_token():
"""
使用 AK,SK 生成鉴权签名(Access Token)
:return: access_token,或是None(如果错误)
"""
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
return str(requests.post(url, params=params).json().get("access_token"))

    if __name__ == '__main__':
main()

将代码复制并进行对应的修改,可通过

pyinstaller -F -c xxx.py  #xxx.py

更改为你的py文件

将py文件打包成可执行的exe文件,然后放入pdf文件目录下,双击运行即可。这里用的是百度智能云识别。

###2024/03/26更新
稍微改了下,做了三个参数,在弹窗让你输入,用法的话,还是放进你要识别手写的PDF路径中,不过这个因为是给人事同事用的,用来识别合同pdf然后重命名,所以其实不一定是适合你的情况,识别出来的列表不一定是一样的,可能需要调整,所以我把源代码也放进来,你们可以自己调整words_result识别的结果。

##又做了调整,直接把结果集下标也做了弹窗输入,你可以在百度智能云控制台 (baidu.com)这里调试一下你要识别的结果是第几个,然后在弹窗中的小标栏里输入即可。

###2024/03/27上班摸鱼,又浅浅修改了一下,将pdf路径也加进了弹窗,可以不用将exe文件放进要修改的pdf里面了,不过因为早上来摸鱼改了,改的并不多就是了,不过要注意,修改后的pdf会移动到你exe当前路径下,后续有空摸鱼的时候也添加个路径输入框吧。成品exe放在下面链接中:ocr_text_new.exe

https://wwm.lanzout.com/b0538flqj 密码:2s8i

image.png (124.15 KB, 下载次数: 1)

api调试结果

api调试结果

免费评分

参与人数 5吾爱币 +11 热心值 +4 收起 理由
wttmm + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Lj114514 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
2025888543 + 1 + 1 热心回复!
Sugarmapler + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
63331069 发表于 2024-3-28 22:10
本帖最后由 63331069 于 2024-3-28 22:29 编辑

Traceback (most recent call last):
  File "ocr_text.py", line 123, in <module>
  File "ocr_text.py", line 95, in main
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'D:\\www\\12.pdf' -> 'Type/Specification.pdf'



路径没有使用 中文。 就出现上面的提示。
112440  这个是成功状态。其他两个不成功

还有一个 能复制的那种PDF 基本上都可以 成功,但是我大部分使用的PDF 都是我自己扫描仪扫描出来的PDF 。成功率不是很高。能否换一个思路, 提取指定坐标 里的文字。 这样的话,可能成功率会比较高一点.


        {
            "words": "型号/规格",
            "location": {
                "top": 420,
                "left": 95,
                "width": 99,
                "height": 17
            }
        },

这段话  应该就是坐标 对吧
这段是从百度智能云里 调试里下载来的
推荐
 楼主| lijin671 发表于 2024-3-25 10:12 |楼主
本帖最后由 lijin671 于 2024-3-26 14:34 编辑
63331069 发表于 2024-3-25 09:28
兄弟,你那边能不能  改动一下。我们小白可以修改 智能云 那三个 KEY。我们改成自己的KEY。这样就不耽误 ...

稍微改了下,就把三个参数做个弹窗让你输入,用法的话,还是放进你要识别手写的PDF路径中,不过这个因为是给人事同事用的,用来识别合同pdf然后重命名,所以其实不一定是适合你的情况,识别出来的列表不一定是一样的,可能需要调整,所以我把源代码也放进来,你们可以自己调整words_result识别的结果。

##又做了调整,直接把结果集下标也做了弹窗输入,你可以在百度智能云控制台 (baidu.com)这里调试一下你要识别的结果是第几个,然后在弹窗中输入即可。

https://wwm.lanzout.com/b0538flqj 密码:2s8i

image.png (124.15 KB, 下载次数: 0)

百度智能云控制台调试界面

百度智能云控制台调试界面
沙发
dbns 发表于 2023-11-27 12:03
3#
52soft 发表于 2023-11-27 12:31
好技术,谢谢分享
4#
jishufanzi 发表于 2023-11-27 12:39
学习了,感谢分享!
5#
想吃山猪肉 发表于 2023-11-27 12:41
感觉以后会用到,谢谢分享
6#
jasonwei 发表于 2023-11-27 12:44
感觉还是不错的
7#
2025888543 发表于 2023-11-27 13:22
感谢大佬
8#
gxhc168 发表于 2023-11-27 13:51
谢谢楼主的分享
9#
ysjd22 发表于 2023-11-27 14:08
学习一下代码
10#
genz 发表于 2023-11-27 14:53
学到了,谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-28 17:56

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表