Browse Source

easyocr和python-tesseract

fuyou 5 months ago
parent
commit
d4f2fc9c6b
100 changed files with 474 additions and 1 deletions
  1. 1 1
      .idea/misc.xml
  2. 158 0
      extract_easyocr/extract.py
  3. BIN
      extract_easyocr/按行分割后的裁剪页面_1.png
  4. 27 0
      extract_easyocr/未裁剪图片文本_1.txt
  5. BIN
      extract_easyocr/标记后的页面_1.png
  6. 26 0
      extract_easyocr/裁剪后图片文本_1.txt
  7. BIN
      extract_easyocr/裁剪后的页面_1.png
  8. BIN
      extract_easyocr/裁剪后页面_1_行_1.png
  9. BIN
      extract_easyocr/裁剪后页面_1_行_10.png
  10. BIN
      extract_easyocr/裁剪后页面_1_行_11.png
  11. BIN
      extract_easyocr/裁剪后页面_1_行_12.png
  12. BIN
      extract_easyocr/裁剪后页面_1_行_13.png
  13. BIN
      extract_easyocr/裁剪后页面_1_行_14.png
  14. BIN
      extract_easyocr/裁剪后页面_1_行_15.png
  15. BIN
      extract_easyocr/裁剪后页面_1_行_16.png
  16. BIN
      extract_easyocr/裁剪后页面_1_行_17.png
  17. BIN
      extract_easyocr/裁剪后页面_1_行_18.png
  18. BIN
      extract_easyocr/裁剪后页面_1_行_19.png
  19. BIN
      extract_easyocr/裁剪后页面_1_行_2.png
  20. BIN
      extract_easyocr/裁剪后页面_1_行_20.png
  21. BIN
      extract_easyocr/裁剪后页面_1_行_21.png
  22. BIN
      extract_easyocr/裁剪后页面_1_行_22.png
  23. BIN
      extract_easyocr/裁剪后页面_1_行_23.png
  24. BIN
      extract_easyocr/裁剪后页面_1_行_24.png
  25. BIN
      extract_easyocr/裁剪后页面_1_行_25.png
  26. BIN
      extract_easyocr/裁剪后页面_1_行_26.png
  27. BIN
      extract_easyocr/裁剪后页面_1_行_27.png
  28. BIN
      extract_easyocr/裁剪后页面_1_行_28.png
  29. BIN
      extract_easyocr/裁剪后页面_1_行_29.png
  30. BIN
      extract_easyocr/裁剪后页面_1_行_3.png
  31. BIN
      extract_easyocr/裁剪后页面_1_行_30.png
  32. BIN
      extract_easyocr/裁剪后页面_1_行_31.png
  33. BIN
      extract_easyocr/裁剪后页面_1_行_32.png
  34. BIN
      extract_easyocr/裁剪后页面_1_行_33.png
  35. BIN
      extract_easyocr/裁剪后页面_1_行_34.png
  36. BIN
      extract_easyocr/裁剪后页面_1_行_35.png
  37. BIN
      extract_easyocr/裁剪后页面_1_行_36.png
  38. BIN
      extract_easyocr/裁剪后页面_1_行_37.png
  39. BIN
      extract_easyocr/裁剪后页面_1_行_38.png
  40. BIN
      extract_easyocr/裁剪后页面_1_行_39.png
  41. BIN
      extract_easyocr/裁剪后页面_1_行_4.png
  42. BIN
      extract_easyocr/裁剪后页面_1_行_5.png
  43. BIN
      extract_easyocr/裁剪后页面_1_行_6.png
  44. BIN
      extract_easyocr/裁剪后页面_1_行_7.png
  45. BIN
      extract_easyocr/裁剪后页面_1_行_8.png
  46. BIN
      extract_easyocr/裁剪后页面_1_行_9.png
  47. 1 0
      extract_easyocr/裁剪后页面_1分割的第_10行.txt
  48. 1 0
      extract_easyocr/裁剪后页面_1分割的第_11行.txt
  49. 1 0
      extract_easyocr/裁剪后页面_1分割的第_12行.txt
  50. 1 0
      extract_easyocr/裁剪后页面_1分割的第_13行.txt
  51. 1 0
      extract_easyocr/裁剪后页面_1分割的第_14行.txt
  52. 1 0
      extract_easyocr/裁剪后页面_1分割的第_15行.txt
  53. 1 0
      extract_easyocr/裁剪后页面_1分割的第_16行.txt
  54. 1 0
      extract_easyocr/裁剪后页面_1分割的第_17行.txt
  55. 1 0
      extract_easyocr/裁剪后页面_1分割的第_18行.txt
  56. 1 0
      extract_easyocr/裁剪后页面_1分割的第_19行.txt
  57. 1 0
      extract_easyocr/裁剪后页面_1分割的第_1行.txt
  58. 2 0
      extract_easyocr/裁剪后页面_1分割的第_20行.txt
  59. 1 0
      extract_easyocr/裁剪后页面_1分割的第_21行.txt
  60. 1 0
      extract_easyocr/裁剪后页面_1分割的第_22行.txt
  61. 1 0
      extract_easyocr/裁剪后页面_1分割的第_23行.txt
  62. 1 0
      extract_easyocr/裁剪后页面_1分割的第_24行.txt
  63. 1 0
      extract_easyocr/裁剪后页面_1分割的第_25行.txt
  64. 0 0
      extract_easyocr/裁剪后页面_1分割的第_26行.txt
  65. 0 0
      extract_easyocr/裁剪后页面_1分割的第_27行.txt
  66. 0 0
      extract_easyocr/裁剪后页面_1分割的第_28行.txt
  67. 0 0
      extract_easyocr/裁剪后页面_1分割的第_29行.txt
  68. 1 0
      extract_easyocr/裁剪后页面_1分割的第_2行.txt
  69. 0 0
      extract_easyocr/裁剪后页面_1分割的第_30行.txt
  70. 2 0
      extract_easyocr/裁剪后页面_1分割的第_31行.txt
  71. 0 0
      extract_easyocr/裁剪后页面_1分割的第_32行.txt
  72. 1 0
      extract_easyocr/裁剪后页面_1分割的第_33行.txt
  73. 2 0
      extract_easyocr/裁剪后页面_1分割的第_34行.txt
  74. 0 0
      extract_easyocr/裁剪后页面_1分割的第_35行.txt
  75. 1 0
      extract_easyocr/裁剪后页面_1分割的第_36行.txt
  76. 2 0
      extract_easyocr/裁剪后页面_1分割的第_37行.txt
  77. 0 0
      extract_easyocr/裁剪后页面_1分割的第_38行.txt
  78. 0 0
      extract_easyocr/裁剪后页面_1分割的第_39行.txt
  79. 1 0
      extract_easyocr/裁剪后页面_1分割的第_3行.txt
  80. 1 0
      extract_easyocr/裁剪后页面_1分割的第_4行.txt
  81. 1 0
      extract_easyocr/裁剪后页面_1分割的第_5行.txt
  82. 1 0
      extract_easyocr/裁剪后页面_1分割的第_6行.txt
  83. 1 0
      extract_easyocr/裁剪后页面_1分割的第_7行.txt
  84. 1 0
      extract_easyocr/裁剪后页面_1分割的第_8行.txt
  85. 3 0
      extract_easyocr/裁剪后页面_1分割的第_9行.txt
  86. 149 0
      extract_python_tesseract/extract.py
  87. BIN
      extract_python_tesseract/按行分割后的裁剪页面_1.png
  88. 40 0
      extract_python_tesseract/未裁剪图片文本_1.txt
  89. BIN
      extract_python_tesseract/标记后的页面_1.png
  90. 37 0
      extract_python_tesseract/裁剪后图片文本_1.txt
  91. BIN
      extract_python_tesseract/裁剪后的页面_1.png
  92. BIN
      extract_python_tesseract/裁剪后页面_1_行_1.png
  93. BIN
      extract_python_tesseract/裁剪后页面_1_行_10.png
  94. BIN
      extract_python_tesseract/裁剪后页面_1_行_11.png
  95. BIN
      extract_python_tesseract/裁剪后页面_1_行_12.png
  96. BIN
      extract_python_tesseract/裁剪后页面_1_行_13.png
  97. BIN
      extract_python_tesseract/裁剪后页面_1_行_14.png
  98. BIN
      extract_python_tesseract/裁剪后页面_1_行_15.png
  99. BIN
      extract_python_tesseract/裁剪后页面_1_行_16.png
  100. BIN
      extract_python_tesseract/裁剪后页面_1_行_17.png

+ 1 - 1
.idea/misc.xml

@@ -3,5 +3,5 @@
   <component name="Black">
     <option name="sdkName" value="D:\Study\anaconda3" />
   </component>
-  <component name="ProjectRootManager" version="2" project-jdk-name="D:\Study\anaconda3" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="E:\Anaconda3" project-jdk-type="Python SDK" />
 </project>

+ 158 - 0
extract_easyocr/extract.py

@@ -0,0 +1,158 @@
+import easyocr
+import numpy as np
+from PIL import Image, ImageDraw, ImageEnhance, ImageFilter
+from pdf2image import convert_from_path
+
+# 初始化 EasyOCR 阅读器,指定语言为中文,使用手动下载的模型路径
+reader = easyocr.Reader(['ch_sim'])
+reader.model_dir = r"E:\Anaconda3\Lib\site-packages\easyocr\model\EasyOCR-master"  # 指定模型存放路径
+
+
+# 将传入的 cropped_image 图像按指定高度(line_height)分割成若干行,并在图像上绘制每行的矩形框。
+def split_image_into_lines_and_mark(cropped_image, line_height):
+    """
+    将裁剪后的图片分割成若干行,并在图像上标出每一行的区域
+    :param cropped_image: 已经裁剪后的图片
+    :param line_height: 每一行的高度,默认是100像素
+    :return: 返回分割后的每一行图像,并且图像上标记了每一行的矩形框
+    """
+    # 获取图像的宽度和高度
+    image_width, image_height = cropped_image.size
+    lines = []
+    draw = ImageDraw.Draw(cropped_image)  # 创建绘图对象
+
+    # 计算分割成多少行
+    for top in range(0, image_height, line_height):
+        bottom = min(top + line_height, image_height)  # 保证最后一行不会超出图片高度
+        # 在图像上绘制矩形框,标出当前行
+        draw.rectangle((0, top, image_width, bottom), outline="green", width=2)
+        # 提取每一行的图像,并将其存储到 lines 列表中。
+        cropped_line = cropped_image.crop((0, top, image_width, bottom))
+        lines.append(cropped_line)
+
+    return lines, cropped_image
+
+
+# 在图像上绘制矩形框
+def draw_rectangle_on_pdf_image(image, outline_color="red", width=3):
+    """
+    在PDF转为的图片上绘制矩形框
+    :param image: 转换后的PDF页面图像
+    :param crop_area: 裁剪区域,元组格式 (left, top, right, bottom)
+    :param outline_color: 矩形框的颜色,默认是红色
+    :param width: 矩形框的线条宽度,默认是3
+    """
+    # dpi为300时的参数
+    crop_area = (100, 200, 1550, 2400)  # 调整裁剪区域
+    draw = ImageDraw.Draw(image)  # 创建绘图对象
+    draw.rectangle(crop_area, outline=outline_color, width=width)  # 绘制矩形框
+    return image
+
+
+# 裁剪图片的指定区域
+def crop_image(image):
+    """
+    从图像中裁剪出指定区域
+    :param image: 要裁剪的图像
+    :param crop_area: 裁剪区域,元组格式 (left, top, right, bottom)
+    :return: 裁剪后的图像
+    """
+    crop_area = (250, 300, 1500, 2350)  # 调整裁剪区域
+    cropped_image = image.crop(crop_area)  # 使用crop方法裁剪
+    return cropped_image
+
+
+# 对图像进行预处理(增强对比度等)
+def preprocess_image(image):
+    # 转为灰度图
+    image_gray = image.convert('L')
+
+    # 去噪(使用模糊来去除噪声)
+    image_denoised = image_gray.filter(ImageFilter.MedianFilter(3))  # 使用3x3的中值滤波器去噪
+
+    # 增加对比度
+    enhancer = ImageEnhance.Contrast(image_denoised)
+    image_enhanced = enhancer.enhance(2.0)  # 增加对比度
+
+    # 返回 NumPy 数组
+    return np.array(image_enhanced)
+
+# 将PDF转换为图片的函数
+def convert_pdf_to_images(pdf_file_path, dpi=300):
+    """
+    将PDF文件转换为图片
+    :param pdf_file_path: PDF文件路径
+    :param dpi: 图片分辨率,默认300
+    :return: 转换后的图片列表
+    """
+    pages = convert_from_path(pdf_file_path, dpi)
+    return pages
+
+
+# 从图片中提取文本(使用easyocr)
+def extract_text_from_pict(page):
+    """
+    从图片中提取文本
+    :param page: 要处理的图片
+    :return: 提取的文本
+    """
+    # 将 PIL 图片转换为 NumPy 数组
+    page_np = np.array(page)
+
+    # 进行图像预处理,确保返回的是 numpy 数组
+    page_np = preprocess_image(page)  # 确保预处理后的图像是 numpy 数组
+
+    # 确保传递给 EasyOCR 的是 numpy 数组
+    result = reader.readtext(page_np)  # 使用 EasyOCR 识别图片中的文本
+
+    text = ""
+    for detection in result:
+        text += detection[1] + '\n'  # detection[1] 是识别出的文本内容
+
+    return text
+
+
+# 将提取的文本写入TXT文件
+def write_text_to_file(text, output_file_path):
+    with open(output_file_path, 'w', encoding='utf-8') as f:
+        f.write(text)
+
+
+# 主程序
+pdf_file_path = r'C:\Users\Admin\Desktop\女性文学exm.pdf'
+
+# 使用新封装的函数将PDF转换为图片
+pages = convert_pdf_to_images(pdf_file_path, dpi=300)
+
+# 在每一页图片上绘制矩形框
+for i, page in enumerate(pages):
+    # 绘制矩形框
+    page_with_box = draw_rectangle_on_pdf_image(page)
+    page_with_box.save(f'标记后的页面_{i + 1}.png', 'PNG')  # 保存带有矩形框的图片
+    print(f"当前标记的是_{i + 1}页面")
+
+    # 裁剪图像
+    cropped_page = crop_image(page)
+    cropped_page.save(f'裁剪后的页面_{i + 1}.png', 'PNG')  # 保存裁剪后的图片
+
+    # 提取未裁剪图片文本并保存
+    text = extract_text_from_pict(page)  # 提取文本
+    write_text_to_file(text, f'未裁剪图片文本_{i + 1}.txt')  # 保存提取的文本
+
+    # 提取裁剪后图片文本并保存
+    text = extract_text_from_pict(cropped_page)  # 提取文本
+    write_text_to_file(text, f'裁剪后图片文本_{i + 1}.txt')  # 保存提取的文本
+
+    # 分割裁剪后的图片为多行,并标出每行区域
+    lines, marked_image = split_image_into_lines_and_mark(cropped_page, line_height=80)  # 调整每行的高度
+    # 保存标记了分割区域的图片
+    marked_image.save(f'按行分割后的裁剪页面_{i + 1}.png', 'PNG')  # 保存标记区域后的图片
+
+    # 保存每一行图像
+    for j, line in enumerate(lines):
+        line.save(f'裁剪后页面_{i + 1}_行_{j + 1}.png', 'PNG')  # 保存每行图像
+        print(f"当前保存的是裁剪后页面_{i + 1}_行_{j + 1}.png")
+        line_text = extract_text_from_pict(line)
+        write_text_to_file(line_text, f'裁剪后页面_{i + 1}分割的第_{j + 1}行.txt')  # 保存提取的文本
+    break
+print("标记完毕")

BIN
extract_easyocr/按行分割后的裁剪页面_1.png


+ 27 - 0
extract_easyocr/未裁剪图片文本_1.txt

@@ -0,0 +1,27 @@
+8016
+我困近代知识女性的报刊活动及其社会影响 ,姜卫玲 ,《编辑
+之友》2012年笫10 期。
+|
+科学~)^性姆削4岌展和潢娈,商伟云 ,《宁波大学学般(人文
+《妇女尜志》与口本学者的近代女性观,杜茗松 .刘丽 ,《外困
+问题研究》2012年笫4期。
+《北京女报》与清末北京女亍教育初探 ,湛小白 ,《北京社会科
+2012 年笫5期。
+报界新女性
+执笔论时势一一我国近代知识女性报刊活动
+的兴起,姜卫玲 ,《新闻知识》2012年笫10期。
+清代女性著述出版途径考 ,张聆丽 ,《古典文献砑究》笫 |-天
+辑 ,2012年。
+清末小说女性形象的社会性别意识与乌托邦想象一一以《女
+子世界》小说创作为例 ,刘钊 ,《南开学报(《学社会科学版)》
+2012年笫6期。
+从女权斗士 .香闺佳人到贤妾良母一-民初匕海女性期刊读
+者定位的演娈及分析 ,谢犬勇 .张朋 ,《学术界》2012年笫12  期。
+新知识与旧伦琪之间:民初《妇女时报》对女性参政问题的探
+讨 ,张朋 《妇女研究论丛》2013年笫1期。
+《女」世界》出版时间考辨一一兼及周氏兄弟早期部分作邰
+的出版时间 ,谢仁敏 《鲁迅研究丹刊》2013 年笫|期。
+近代报刊诗话牛妇女形象的重朔与复归 ,李德强 ,《华南琪丁
+大学学报(社会科学版)》2013 年笫1期。
+我困近代妇女报刊的特点与产生原[分析 ,赵晓兰吴潮 ,
+《牛囵出版》2013 年笫5  期。

BIN
extract_easyocr/标记后的页面_1.png


+ 26 - 0
extract_easyocr/裁剪后图片文本_1.txt

@@ -0,0 +1,26 @@
+我囤近代知识女性的报刊活动及其社会影响 ,姜卫玲 ,《编辑
+之友》2012年笫10 期。
+牛囵女性期刊的发展和演变,高伟云 ,《宁波大学学报(人文
+科学版) 》2012年笫4期。
+《妇女尜志》与日本学者的近代女性观,杜茗松 .刘丽 ,《外困
+问题研究》2012 年笫4期。
+《北京女报》与清末北京女亍教育初探 ,湛小白 ,《北京社会科
+2012年笫5期。
+报界新女性
+执笔论时势-一我囵近代知识女性报刊活动
+的兴起,姜卫玲 ,《新闻知识》2012年笫10期。
+清代女性著述出版途径考 ,张聆丽 ,《古典文献砑究》笫 |-天
+辑 ,2012年。
+清末小说女性形象的社会性别意识与乌托邦想象一-以《女
+〈世界》小说创作为例 ,刘钊 《南开学报(折学衬会科学版)》
+2012年笫6期。
+从女权斗士 .香闺佳人到贤赉良母--民初匕海女性期刊读
+者定位的演娈及分析 ,谢犬勇 .张朋 ,《学术界》2012 年笫12  期。
+新知识与旧伦琪之间:民初《妇女时报》对女性参政问题的探
+讨 ,张朋 《妇女研究论丛》2013年笫|期。
+《女」世界》出版时间考辨一-兼及周氏兄弟早期部分作[
+的出版时间 ,谢1敏 ,《鲁迅研究井刊》2013 年笫1期。
+近代报刊诗话牛妇女形象的重朔与复归 ,李德强 ,《华南琪丁
+大学学报(社会科学版) 》2013 年笫|期。
+我囵近代妇女报刊的特点与产生|冈分析 ,赵晓兰 吴潮,
+《牛困出版》2013 年笫5  期。

BIN
extract_easyocr/裁剪后的页面_1.png


BIN
extract_easyocr/裁剪后页面_1_行_1.png


BIN
extract_easyocr/裁剪后页面_1_行_10.png


BIN
extract_easyocr/裁剪后页面_1_行_11.png


BIN
extract_easyocr/裁剪后页面_1_行_12.png


BIN
extract_easyocr/裁剪后页面_1_行_13.png


BIN
extract_easyocr/裁剪后页面_1_行_14.png


BIN
extract_easyocr/裁剪后页面_1_行_15.png


BIN
extract_easyocr/裁剪后页面_1_行_16.png


BIN
extract_easyocr/裁剪后页面_1_行_17.png


BIN
extract_easyocr/裁剪后页面_1_行_18.png


BIN
extract_easyocr/裁剪后页面_1_行_19.png


BIN
extract_easyocr/裁剪后页面_1_行_2.png


BIN
extract_easyocr/裁剪后页面_1_行_20.png


BIN
extract_easyocr/裁剪后页面_1_行_21.png


BIN
extract_easyocr/裁剪后页面_1_行_22.png


BIN
extract_easyocr/裁剪后页面_1_行_23.png


BIN
extract_easyocr/裁剪后页面_1_行_24.png


BIN
extract_easyocr/裁剪后页面_1_行_25.png


BIN
extract_easyocr/裁剪后页面_1_行_26.png


BIN
extract_easyocr/裁剪后页面_1_行_27.png


BIN
extract_easyocr/裁剪后页面_1_行_28.png


BIN
extract_easyocr/裁剪后页面_1_行_29.png


BIN
extract_easyocr/裁剪后页面_1_行_3.png


BIN
extract_easyocr/裁剪后页面_1_行_30.png


BIN
extract_easyocr/裁剪后页面_1_行_31.png


BIN
extract_easyocr/裁剪后页面_1_行_32.png


BIN
extract_easyocr/裁剪后页面_1_行_33.png


BIN
extract_easyocr/裁剪后页面_1_行_34.png


BIN
extract_easyocr/裁剪后页面_1_行_35.png


BIN
extract_easyocr/裁剪后页面_1_行_36.png


BIN
extract_easyocr/裁剪后页面_1_行_37.png


BIN
extract_easyocr/裁剪后页面_1_行_38.png


BIN
extract_easyocr/裁剪后页面_1_行_39.png


BIN
extract_easyocr/裁剪后页面_1_行_4.png


BIN
extract_easyocr/裁剪后页面_1_行_5.png


BIN
extract_easyocr/裁剪后页面_1_行_6.png


BIN
extract_easyocr/裁剪后页面_1_行_7.png


BIN
extract_easyocr/裁剪后页面_1_行_8.png


BIN
extract_easyocr/裁剪后页面_1_行_9.png


+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_10行.txt

@@ -0,0 +1 @@
+的兴起,姜卫玲 ,《新闻知识》2012年笫 10 期

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_11行.txt

@@ -0,0 +1 @@
+清代女性著述出版途径考,张聆丽 ,《古典文献研究》笫 |-天

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_12行.txt

@@ -0,0 +1 @@
+辑 ,2012年

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_13行.txt

@@ -0,0 +1 @@
+清末小说女性形象的社会性别意识与乌托邦想象一-以《女

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_14行.txt

@@ -0,0 +1 @@
+〈世界》小说创作为例,刘钊 ,《南升学报(折学衬会科学版)》

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_15行.txt

@@ -0,0 +1 @@
+2012年第6期。

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_16行.txt

@@ -0,0 +1 @@
+从女权斗1: .香闺佳人到贤赉良母-民初|海女性期刊读

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_17行.txt

@@ -0,0 +1 @@
+者定'的演变及分析 ,谢犬勇 .张朋 ,《学术弁》2012 年笫12  期_

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_18行.txt

@@ -0,0 +1 @@
+新知识与旧伦琪之间:民初《妇女时报》对女性参政问题的探

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_19行.txt

@@ -0,0 +1 @@
+讨 ,张朋 ,《妇女研究论丛》2013年笫1期。

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_1行.txt

@@ -0,0 +1 @@
+我囤近代知识女性的报刊活动及其社会影响 ,姜卫玲 ,《编辑

+ 2 - 0
extract_easyocr/裁剪后页面_1分割的第_20行.txt

@@ -0,0 +1,2 @@
+《女」世界》出版时间考辨一
+兼及周氏兄弟早期部分作邰

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_21行.txt

@@ -0,0 +1 @@
+的出版时间 ,谢仁敏 《鲁达研究井刊》2013 年笫1期

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_22行.txt

@@ -0,0 +1 @@
+近代报刊诗话4妇女形象的秉朔与复归 ,李德强 ,《华南琪丁

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_23行.txt

@@ -0,0 +1 @@
+大学学报(社会科学版) 》2013 年笫1期。

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_24行.txt

@@ -0,0 +1 @@
+我国近代妇女报刊的特点与产尘原[分析 ,赵哓兰吴潮

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_25行.txt

@@ -0,0 +1 @@
+牛罔出版》2013年笫5期_

+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_26行.txt


+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_27行.txt


+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_28行.txt


+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_29行.txt


+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_2行.txt

@@ -0,0 +1 @@
+之友》2012年笫 10 期。

+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_30行.txt


+ 2 - 0
extract_easyocr/裁剪后页面_1分割的第_31行.txt

@@ -0,0 +1,2 @@
+
+甘

+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_32行.txt


+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_33行.txt

@@ -0,0 +1 @@
+近代报刊诗话中妇女形象的秉朔与复归 ,杰德强 ,《华南琪[

+ 2 - 0
extract_easyocr/裁剪后页面_1分割的第_34行.txt

@@ -0,0 +1,2 @@
+5)!901 2
+令 1 |汩

+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_35行.txt


+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_36行.txt

@@ -0,0 +1 @@
+我国近代妇女报刊的特点与产:尘原冈分析 ,赵晓兰  潮 ,

+ 2 - 0
extract_easyocr/裁剪后页面_1分割的第_37行.txt

@@ -0,0 +1,2 @@
+1012
+怂 < {8

+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_38行.txt


+ 0 - 0
extract_easyocr/裁剪后页面_1分割的第_39行.txt


+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_3行.txt

@@ -0,0 +1 @@
+中囤女性期刊的发展和演娈,高伟云 ,《宁波大学学报(人文

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_4行.txt

@@ -0,0 +1 @@
+科学版) 》2012年笫4期。

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_5行.txt

@@ -0,0 +1 @@
+《妇女尔志》与日本学者的近代女性观 ,杜若松 .刘雨 ,《外囤

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_6行.txt

@@ -0,0 +1 @@
+问题研究》2012年笫4期。

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_7行.txt

@@ -0,0 +1 @@
+《北京女报》与清末北京女亍教育初探 ,湛小白 ,《北京社会科

+ 1 - 0
extract_easyocr/裁剪后页面_1分割的第_8行.txt

@@ -0,0 +1 @@
+2012 年笫5期。

+ 3 - 0
extract_easyocr/裁剪后页面_1分割的第_9行.txt

@@ -0,0 +1,3 @@
+报界新女性
+执笔论时势一
+一我囤近代知识女性报刊活动^

+ 149 - 0
extract_python_tesseract/extract.py

@@ -0,0 +1,149 @@
+import pytesseract
+import numpy as np
+from PIL import Image, ImageDraw, ImageEnhance, ImageFilter
+from pdf2image import convert_from_path
+
+# 将传入的 cropped_image 图像按指定高度(line_height)分割成若干行,并在图像上绘制每行的矩形框。
+def split_image_into_lines_and_mark(cropped_image, line_height):
+    """
+    将裁剪后的图片分割成若干行,并在图像上标出每一行的区域
+    :param cropped_image: 已经裁剪后的图片
+    :param line_height: 每一行的高度,默认是100像素
+    :return: 返回分割后的每一行图像,并且图像上标记了每一行的矩形框
+    """
+    # 获取图像的宽度和高度
+    image_width, image_height = cropped_image.size
+    lines = []
+    draw = ImageDraw.Draw(cropped_image)  # 创建绘图对象
+
+    # 计算分割成多少行
+    for top in range(0, image_height, line_height):
+        bottom = min(top + line_height, image_height)  # 保证最后一行不会超出图片高度
+        # 在图像上绘制矩形框,标出当前行
+        draw.rectangle((0, top, image_width, bottom), outline="green", width=2)
+        # 提取每一行的图像,并将其存储到 lines 列表中。
+        cropped_line = cropped_image.crop((0, top, image_width, bottom))
+        lines.append(cropped_line)
+
+    return lines, cropped_image
+
+
+# 在图像上绘制矩形框
+def draw_rectangle_on_pdf_image(image, outline_color="red", width=3):
+    """
+    在PDF转为的图片上绘制矩形框
+    :param image: 转换后的PDF页面图像
+    :param crop_area: 裁剪区域,元组格式 (left, top, right, bottom)
+    :param outline_color: 矩形框的颜色,默认是红色
+    :param width: 矩形框的线条宽度,默认是3
+    """
+    # dpi为300时的参数
+    crop_area = (100, 200, 1550, 2400)  # 调整裁剪区域
+    draw = ImageDraw.Draw(image)  # 创建绘图对象
+    draw.rectangle(crop_area, outline=outline_color, width=width)  # 绘制矩形框
+    return image
+
+
+# 裁剪图片的指定区域
+def crop_image(image):
+    """
+    从图像中裁剪出指定区域
+    :param image: 要裁剪的图像
+    :param crop_area: 裁剪区域,元组格式 (left, top, right, bottom)
+    :return: 裁剪后的图像
+    """
+    crop_area = (250, 300, 1500, 2350)  # 调整裁剪区域
+    cropped_image = image.crop(crop_area)  # 使用crop方法裁剪
+    return cropped_image
+
+
+# 对图像进行预处理(增强对比度等)
+def preprocess_image(image):
+    # 转为灰度图
+    image_gray = image.convert('L')
+
+    # 去噪(使用模糊来去除噪声)
+    image_denoised = image_gray.filter(ImageFilter.MedianFilter(3))  # 使用3x3的中值滤波器去噪
+
+    # 增加对比度
+    enhancer = ImageEnhance.Contrast(image_denoised)
+    image_enhanced = enhancer.enhance(2.0)  # 增加对比度
+
+    # 返回 NumPy 数组
+    return np.array(image_enhanced)
+
+# 将PDF转换为图片的函数
+def convert_pdf_to_images(pdf_file_path, dpi=300):
+    """
+    将PDF文件转换为图片
+    :param pdf_file_path: PDF文件路径
+    :param dpi: 图片分辨率,默认300
+    :return: 转换后的图片列表
+    """
+    pages = convert_from_path(pdf_file_path, dpi)
+    return pages
+
+
+# 从图片中提取文本(使用 pytesseract)
+def extract_text_from_pict(page):
+    """
+    从图片中提取文本
+    :param page: 要处理的图片
+    :return: 提取的文本
+    """
+    # 将 PIL 图片转换为 NumPy 数组
+    page_np = np.array(page)
+
+    # 进行图像预处理,确保返回的是 numpy 数组
+    page_np = preprocess_image(page)  # 确保预处理后的图像是 numpy 数组
+
+    # 使用 pytesseract 提取文本
+    text = pytesseract.image_to_string(page_np, lang='chi_sim')  # 'chi_sim' 为简体中文的语言包
+
+    return text
+
+
+# 将提取的文本写入TXT文件
+def write_text_to_file(text, output_file_path):
+    with open(output_file_path, 'w', encoding='utf-8') as f:
+        f.write(text)
+
+
+# 主程序
+pdf_file_path = r'C:\Users\Admin\Desktop\女性文学exm.pdf'
+
+# 使用新封装的函数将PDF转换为图片
+pages = convert_pdf_to_images(pdf_file_path, dpi=300)
+
+# 在每一页图片上绘制矩形框
+for i, page in enumerate(pages):
+    # 绘制矩形框
+    page_with_box = draw_rectangle_on_pdf_image(page)
+    page_with_box.save(f'标记后的页面_{i + 1}.png', 'PNG')  # 保存带有矩形框的图片
+    print(f"当前标记的是_{i + 1}页面")
+
+    # 裁剪图像
+    cropped_page = crop_image(page)
+    cropped_page.save(f'裁剪后的页面_{i + 1}.png', 'PNG')  # 保存裁剪后的图片
+
+    # 提取未裁剪图片文本并保存
+    text = extract_text_from_pict(page)  # 提取文本
+    write_text_to_file(text, f'未裁剪图片文本_{i + 1}.txt')  # 保存提取的文本
+
+    # 提取裁剪后图片文本并保存
+    text = extract_text_from_pict(cropped_page)  # 提取文本
+    write_text_to_file(text, f'裁剪后图片文本_{i + 1}.txt')  # 保存提取的文本
+
+    # 分割裁剪后的图片为多行,并标出每行区域
+    lines, marked_image = split_image_into_lines_and_mark(cropped_page, line_height=80)  # 调整每行的高度
+    # 保存标记了分割区域的图片
+    marked_image.save(f'按行分割后的裁剪页面_{i + 1}.png', 'PNG')  # 保存标记区域后的图片
+
+    # 保存每一行图像
+    for j, line in enumerate(lines):
+        line.save(f'裁剪后页面_{i + 1}_行_{j + 1}.png', 'PNG')  # 保存每行图像
+        print(f"当前保存的是裁剪后页面_{i + 1}_行_{j + 1}.png")
+        line_text = extract_text_from_pict(line)
+        write_text_to_file(line_text, f'裁剪后页面_{i + 1}分割的第_{j + 1}行.txt')  # 保存提取的文本
+    break
+print("标记完毕")

BIN
extract_python_tesseract/按行分割后的裁剪页面_1.png


+ 40 - 0
extract_python_tesseract/未裁剪图片文本_1.txt

@@ -0,0 +1,40 @@
+2
+
+洪关恢冰应冲守尘国于
+
+我国近代知识女性的报刊活动及其社会影响,兰卫玲《编辑
+之友》2012 年第 10 期。
+
+中国女性期刊的发展和演变,丙伟云人《宁波大学学报(人文
+科学版)》2012 年第4 期。
+
+《妇女洒志?与日本学者的近代女性观,性各松`刘十《外国
+问题研究》2012 年第4 期。
+
+《北京女报》与清末北京女子教育初探,江小白人《北京社会科
+学?2012 年第5 期。
+
+报界新女性”执笔论时势一 我国近代知识女性报刊活动
+的兴起,差卫玲《新闻知识》2012 年第 10 期。
+
+清代女性著述出版途径考,张聆韧《古典文献研究》第 二五
+辑,2012 年。
+
+清末小说女性形象的社会性别意识与乌托邦想象一 以《女
+子世界》小说创作为例,刘钊《南开学报(哲学社会科学版)》
+
+从女权斗士.香闺佳人到质妻民母一 民初上海女性期刊读
+者定位的演变及分析,谢大勇.张朋,人《学术界》2012 年第 12 期。
+
+新知识与日伦理之间:民初4妇女时报》对女性参政问题的探
+讨,张朋,《妇女研究论处》2013 年第 1 期。
+
+《女子世界》出版时间考辨一兼及周氏兄弟早期部分作蜗
+的出版时间 ,谢仁敏,人《鲁迅研究月刊》2013 年第 1 期。
+
+近代报刊诗话中妇女形象的重塑与复归,李德强《华南理工
+大学学报(社会科学版)》2013 年第 1 期。
+
+我国近代妇女报刊的特点与产生序内分析,赵晓兰.闪潮,
+《中国出版?2013 年第5 期。
+

BIN
extract_python_tesseract/标记后的页面_1.png


+ 37 - 0
extract_python_tesseract/裁剪后图片文本_1.txt

@@ -0,0 +1,37 @@
+我国近代知识女性的报刊活动及其社会影响 ,姜卫堆《编辑
+之友》2012 年第 10 期。
+
+中国女性期刊的发展和演变,吉伟云人《宁波大学学报(人文
+科学版)》2012 年第4期。
+
+《妇女洒志》与日本学者的近代女性观,杜各松、刘十《外国
+问题研究》2012 年第4 期。
+
+《北京女报》与清末北京女子教育初探,湛小白人《北京社会科
+学?2012 年第5 期。
+
+报界新女性”执笔论时势一 我国近代知识女性报刊活动
+的兴起,差卫玲《新闻知识》2012 年第 10 期。
+
+清代女性著述出版途径者 ,张聆十,古典文献研究》第 二五
+辑,2012 年。
+
+清末小说女性形象的社会性别意识与乌托邦想象一 以4女
+了世界》小说创作为例,刘钊,南开学报(折学社会科学版)》
+2012 年第6 期。
+
+从女权斗士 .香闺佳人到贤麦民母一 民初上海女性期刊读
+者定位的演变及分析,谢天勇 .张朋,学术界?2012 年第 12 期。
+
+新知识与昌伦理之间:民初《妇女时报》对女性参政问题的控
+讨,张朋《妇女研究论处》2013 年第 1 期。
+
+《女子世界》出版时间考辨一 兼及周氏兄弟早期部分作品
+的出版时间 ,谢仁敏,人《鲁迅研究月刊?2013 年第 1 期。
+
+近代报刊诗话中妇女形象的重塑与复归,李德强《华南理工
+大学学报(社会科学版)》2013 年第 1 期。
+
+我国近代妇女报刊的特点与产生友因分析,赵晓兰.大潮,
+《中国出版?2013 年第5 期。
+

BIN
extract_python_tesseract/裁剪后的页面_1.png


BIN
extract_python_tesseract/裁剪后页面_1_行_1.png


BIN
extract_python_tesseract/裁剪后页面_1_行_10.png


BIN
extract_python_tesseract/裁剪后页面_1_行_11.png


BIN
extract_python_tesseract/裁剪后页面_1_行_12.png


BIN
extract_python_tesseract/裁剪后页面_1_行_13.png


BIN
extract_python_tesseract/裁剪后页面_1_行_14.png


BIN
extract_python_tesseract/裁剪后页面_1_行_15.png


BIN
extract_python_tesseract/裁剪后页面_1_行_16.png


BIN
extract_python_tesseract/裁剪后页面_1_行_17.png


Some files were not shown because too many files changed in this diff