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 的相关文章

  • 生成逗号分隔值

    假设我有一个字符串集合 foo bar xyz 我想从列表中生成一个逗号分隔的值 如下所示 foo bar xyz 请注意末尾缺少 我知道有多种方法可以生成此内容 使用 for 循环和 string Format 或 StringBuild
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex
  • 将时间添加到日期时间

    我有一个像这样的日期字符串 然后使用strptime 所以就像这样 my time datetime datetime strptime 07 05 15 m d Y 现在我想添加 23 小时 59 分钟my time 我努力了 timed
  • 什么是仅匹配空字符串的正则表达式?

    有很多关于正则表达式的帖子来匹配潜在地空字符串 但我找不到任何提供正则表达式的字符串only匹配一个空字符串 我知道 将匹配任何行的开头并且 将匹配任何行的结尾以及字符串的结尾 像这样 匹配的内容远不止空字符串 如 n foobar n n
  • 如何在EditText中显示格式化文本?

    现在我正在编写简单的笔记应用程序 我需要在 EditText 中显示格式化的单独选定文本 I tried EditText et EditText findViewById R id edittext String string int s
  • JavaFX:将像素写入 PixelWriter 的最快方法

    我正在寻找最快的方式来写入像素javafx scene image Image 写信给BufferedImage的后备数组要快得多 至少在我制作的测试图像上 只花了大约 20 毫秒BufferedImage WritableImage另一方
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • 适用于 .NET 2.0 的更精确的 PNG 库?

    是的 我正在使用 C 2 0 需要对 PNG 文件执行操作 例如使用自定义调色板 但我不知道如何使用 System Drawing 是否有第 3 方库 最好是兼容 GPL 的 可以对 PNG 编码进行更精细的控制 Update 我想做的事情
  • 静态字符串文字表?

    在 C 中创建全局静态字符串表的正确方法是什么 我所说的 全局 是指 可从包含标头的任何文件中使用 但不是某些运行时创建的单一对象的一部分 我所说的 静态 是指 尽可能少地设置运行时间 只读内存页中的数据 每个应用程序只有 1 个数据实例
  • 使用 JavaScript 生成 PDF 文件

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • Ruby 中的 DateTime.parse() 是否依赖于语言环境?

    我想知道以下示例的输出 解析时01 03 它会被解决为Mar 1st or Jan 3rd Ruby 不依赖于语言环境 因为红宝石是一个服务器端语言而不是客户端像 JavaScript 一样的语言 Ruby 使用系统时钟yourWeb 应用
  • 在C#中的某个单词之后/之前过滤字符串中的值

    我有很长的字符串 它们是 IMAP 请求的响应 我想从中提取一些值 它通常的格式类似于 x someword 或 someword x 如何获取某个单词 已知 的x 它可以超过一位数字 响应的每一 行 如下所示 x someword r n
  • 如何将字符串日期转换为 NSDate?

    我想转换字符串 2014 07 15 06 55 14 198000 00 00 to an NSDate在斯威夫特 尝试这个 let dateFormatter NSDateFormatter dateFormatter dateForm
  • H2 SQL 日期比较

    在 H2 数据库中 如何在 TIMESTAMP 类型的列上运行查询 SELECT FROM RECORDS WHERE TRAN DATE lt 2012 07 24 Try 2012 07 24
  • Javascript:删除字符串标点符号并拆分成单词?

    抱歉 如果之前有人问过这个问题 但我正在尝试从这样的字符串中获取单词数组 Exclamation Question Quotes Apostrophe Wasn t Couldn t Didn t 该数组应该看起来像这样 exclamati
  • 如何在无头模式下使用 Libre Office Draw 从命令行创建 PDF/A?

    LibreOffice Draw 允许您打开非 PDF A 文件并将其导出为 PDF A 1b 或 PDF A 2b 文件 通过在 macOS 上调用命令行也可以实现相同的效果 Applications LibreOffice app Co
  • `SystemTime::now` 是否受夏令时影响?

    在时间 T 我调用SystemTime now duration since UNIX EPOCH 在时间 T 10 当夏令时开始时 我调用相同的调用 我可以预期这两个实例之间会出现任何奇怪的行为吗 SystemTime本身完全独立于时区
  • 使用信用卡号的字符串格式

    我正在尝试将信用卡号显示为类似 的字符串 I tried txtbox Text string Format 0 ccNumber 但它不起作用 有任何想法吗 String Format 0 0000 0000 0000 0000 numb

随机推荐