c# string 转 datetime_tesseract || PDF转PNG转txt

2023-05-16

08837cf0d89c16b723b8d991c901dcef.gif

d72c3e75b20c16e2edf5df2b8d4738dc.png由图片扫描生成的PDF文件无法复制粘贴文字,是不是很困扰?虽然有一些阅读器和在线工具可以解析图片中的文字,但毕竟只能线下处理,不能满足批量的系统线上功能。今天写一个PDF转图片、图片转txt的代码模块,你可以将它封装起来,实现线上识别pdf中的文字!01

关于tesseract:

(1)首先,pip install pytesseract;

(2)然后,需要下载 tesseract-ocr

下载网址:https://github.com/UB-Mannheim/tesseract/wiki选择自己的版本下载,下载之后直接安装即可。修改pytesseract.py 文件里面的指向路径为你的安装路径; ( 3)最后,将你的安装路径 .\Tesseract-OCR\tessdata 添加到环境变量中; e4d0e5119d7ea3ee35a5e4df00cbde85.png(4)其他还需要的安装包:fitz,PIL,可以直接通过pip或conda来安装,不赘述。(5)关于识别语言库的下载(原github失效中,但有热心网友提供了下载包,简体中文为chi_sim): https://blog.csdn.net/qq_38161040/article/details/9072745602

PDF转PNG图片:

import fitzimport pytesseractfrom PIL import Imageimport datetimedef pdf_image(pdfPath,imgPath,zoom_x,zoom_y,rotation_angle):    '''    将PDF转化为png    pdfPath:pdf文件的路径    imgPath:图像要保存的文件夹    zoom_x: x方向的缩放系数    zoom_y: y方向的缩放系数    rotation_angle: 旋转角度    '''    # 打开PDF文件    pdf = fitz.open(pdfPath)    # 逐页读取PDF    for pg in range(0, pdf.pageCount):        page = pdf[pg]        # 设置缩放和旋转系数        trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)        pm = page.getPixmap(matrix=trans, alpha=False)        # 开始写图像        pm.writePNG(imgPath+str(pg)+".png")    pdf.close()
03

PNG转txt:

def main():    '''    png图片转为txt    '''    for i in range(8):#假如有8页图片,分别为0.png,1.png...        starttime = datetime.datetime.now()        image = Image.open(r"C:/Users/Lenovo/Desktop/"+str(i)+".png")        text = pytesseract.image_to_string(image, lang='chi_sim')  # 使用简体中文解析图片        endtime = datetime.datetime.now()        text=text.replace(" ","")        with open(r"C:/Users/Lenovo/Desktop/"+str(i)+".txt", "a") as f: # 将识别出来的文字存到本地            # print(text)            f.write(str(text))            if __name__ == "__main__":       pdf_image(path,r"C:/Users/Lenovo/Desktop/",5,5,0)   main()

注:将路径换为你的pdf路径和图片路径

04

查看效果:

pdf

5895a5ea2a1a9d9d9b0c9b488a4bee84.png

txt

99de4a6bcfb3d344c075f9eb601d4888.png

47d0fb73ce67d183471e45fa3e1cd1e9.gif

扫码关注

立出奇迹

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c# string 转 datetime_tesseract || PDF转PNG转txt 的相关文章

  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 旋转 Markdown 的表格 pdf 输出

    我想将 pdf 上的表格输出旋转 90 度 我正在使用 Markdown 生成报告并kable循环显示表格 如果可以的话我想继续使用kable因为还有很多其他依赖于它的东西我没有包含在这个 MWE 中 这是一个简单的例子 使用iris数据集
  • Mockito:匹配除一个之外的任何字符串[重复]

    这个问题在这里已经有答案了 如何使用 Mockito 编写匹配器来匹配除特定字符串之外的任何字符串 我尝试使用一些 hamcrest 匹配器来否定和组合其他匹配器 但是 hamcrest 匹配器都返回类型的值Matcher
  • Python:删除字符串开头的数字

    我有一些这样的字符串 string1 123 123 This is a string some other numbers string2 1 This is a string some numbers string3 12 3 12 T
  • 为什么 new String("Hello") 在 C# 中无效?

    制作背后的逻辑 原因是什么 String s new String Hello World 在 C 中非法 错误是 string String char 的最佳重载方法匹配有一些无效参数 我对 API 文档不感兴趣 我感兴趣的是为什么这是非
  • 使用 JavaScript 比较两个日期未按预期工作[重复]

    这个问题在这里已经有答案了 这是我的 JavaScript 代码 var prevDate new Date 1 25 2011 the string contains a date which comes from a server si
  • 以编程方式将字符串宽度值插入到 sprintf() 中

    我正在尝试以编程方式将字符串宽度值插入到sprintf 格式 期望的结果是 sprintf 20s hello 1 hello 但我想插入20在同一通话中即时进行 因此它可以是任何号码 我努力了 sprintf ds 20 hello 1
  • 从字符串末尾删除多个字符类型

    我有一个构建地址字段的循环 其中一些字段在字符串末尾可能为空 List
  • 将一串数据标记为结构向量?

    因此 我有以下数据字符串 该数据是通过 TCP winsock 连接接收的 并且想要进行高级标记化 将其转换为结构向量 其中每个结构代表一条记录 std string buf 44 william adama commander stuff
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • DOCX 到 PDF:SaveAs2、ExportAsFixedFormat 与 PrintOut

    我有一个小小的目标 即使用 C 和 NET 将大量 docx 文件转换为 pdf 而无需打开 Word 可见 且无需使用任何第三方库 需要管理的组件更少 花费的资金也更少 目前 我正在尝试正确转换单个文档 该文档必须尽可能高效 以便快速转换
  • 删除字符串中的转义符,或者“我怎样才能让 \ 不碍事?”

    转义字符在 R 中会带来很多麻烦 前面的问题证明了这一点 更改列中的值 https stackoverflow com questions 10046357 change the values in a column 10046412 10
  • 使用 webkit 转换 Html 到 PDF

    从 Html 生成 PDF 时 webkit 转换不起作用 我需要将 div 旋转 45 度 使用 webkit 变换后 它在屏幕上看起来没问题 但使用 winnovatives Html 到 PDF 转换器时 输出是平坦的而不是旋转的 有
  • jquery构建http查询字符串

    我有一个这样的对象 Object id myid token sometoken 我需要构建一个 HTTP 查询字符串并得到如下内容 http domain com file html id myid token sometoken 我有什
  • 字符串替换多个值

    我有一个看起来像这样的字符串 布拉布拉 亚达亚达 布拉布拉 亚达亚达 有没有办法只替换前两个 或最后两个 以便我可以获得下一个输出 Bla bla a href link1 yada yada a bla bla yada yada 如有必
  • c++ 最大 std::string 长度由堆栈大小或堆大小决定?

    正如问题中所问 std string myVar 它可以容纳的最大字符是由堆栈还是堆决定的 谢谢 默认情况下 分配的内存为std string是动态分配的 注意std string has a max size 函数返回实现支持的最大字符数
  • php strtotime“上周一”如果今天是周一?

    我想用strtotime last Monday 问题是 如果今天是星期一 它会返回什么 它似乎正在返回上周星期一的日期 在这种情况下我怎样才能让它返回今天的日期 如果您阅读手册 其中有一个很好的示例 它准确地描述了您想要执行的操作http
  • C 中带有指针的 For 循环

    我不明白指针在其中的作用for loop 什么是 p在下面的循环中做什么 char str 128 Some Text char p for p str p what does this mean p Code 其余的我都明白 但为什么不明
  • Python Selenium 打印另存为 PDF 等待文件名输入

    我正在尝试通过打印对话框将网站另存为 PDF 我的代码允许我另存为pdf 但要求我输入文件名 我不知道如何将文件名传递到弹出框 附上我的代码 import time from selenium import webdriver import
  • JavaScript 中最长的通用前缀

    我正在尝试解决 Leet Code 挑战14 最长公共前缀 https leetcode com problems longest common prefix 编写一个函数来查找字符串数组中最长的公共前缀字符串 如果没有公共前缀 则返回空字

随机推荐