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

+ 22 - 0
dpi检测/dpi.py

@@ -0,0 +1,22 @@
+from pdf2image import convert_from_path
+import pytesseract
+
+
+def test_dpi_for_pdf(pdf_file_path, dpi_values=[150, 300, 600]):
+    for dpi in dpi_values:
+        # 将PDF转换为图片
+        pages = convert_from_path(pdf_file_path, dpi=dpi)
+
+        for i, page in enumerate(pages):
+            # 提取文本
+            text = pytesseract.image_to_string(page, lang='chi_sim')  # 使用OCR提取中文文本
+            print(f"DPI: {dpi}, Page: {i + 1}")
+            print(text[:300])  # 只打印前500个字符来看看效果
+            break
+
+
+pdf_file_path = 'D:/其他/女性文学副本.pdf'
+# test_dpi_for_pdf(pdf_file_path, dpi_values=[150, 200,250,300,350, 400,450,500,550, 600])
+test_dpi_for_pdf(pdf_file_path, dpi_values=[150, 160,170,180,190,200])
+
+# 200目前表现良好

+ 124 - 0
extract_pyocr/extract.py

@@ -0,0 +1,124 @@
+import pyocr
+import pyocr.builders
+from pdf2image import convert_from_path
+from PIL import Image, ImageDraw  # 导入Pillow库和ImageDraw模块用于绘制
+
+# 获取OCR工具
+tool = pyocr.get_available_tools()[0]  # 获取第一个OCR工具,一般是Tesseract
+
+# 将传入的 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 = (250, 300, 1600, 2300)
+    # dpi为200时的参数
+    crop_area = (150, 200, 1050, 1550)
+    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: 裁剪后的图像
+    """
+    # dpi为300时的参数
+    # crop_area = (250, 300, 1600, 2300)
+    # dpi为200时的参数
+    crop_area = (150, 200, 1050, 1550)
+    cropped_image = image.crop(crop_area)  # 使用crop方法裁剪
+    return cropped_image
+
+# 将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
+
+# 从图片中提取文本(使用 pyocr)
+def extract_text_from_pict(page):
+    # 使用 pyocr 从图像中提取文本
+    text = tool.image_to_string(page, lang='chi_sim', builder=pyocr.builders.TextBuilder())
+    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 = 'D:/其他/女性文学副本.pdf'
+
+# 使用新封装的函数将PDF转换为图片
+pages = convert_pdf_to_images(pdf_file_path, dpi=200)
+
+# 在每一页图片上绘制矩形框
+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=53)  # 设定每行的高度为100像素
+    # 保存标记了分割区域的图片
+    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_pyocr/按行分割后的裁剪页面_1.png


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

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

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


+ 36 - 0
extract_pyocr/裁剪后图片文本_1.txt

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

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

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

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

@@ -0,0 +1 @@
+清代女性著述出版途径考,张聆十《古典文献研究》第十五

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

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

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

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

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

@@ -0,0 +1 @@
+子世界》小说创作为例,刘钊《南开学报(哲学社会科学版)》

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

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

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

@@ -0,0 +1 @@
+从女权斗士 `香闺佳人到贤麦良母一一民初上海女性期刊读

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

@@ -0,0 +1 @@
+者定位的演变及分析,谢天勇.张朋,《学术界》2012 年第 12 期。

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

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

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

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

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

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

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

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

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

@@ -0,0 +1 @@
+的出版时间 ,谢仁敏《和鲁迅研究月刊》2013 年第1期。

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

@@ -0,0 +1,3 @@
+近代报刊诗话中妇女形象的对
+
+臣塑与复归 ,李德强,《华南理工

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

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

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

@@ -0,0 +1 @@
+我国近代妇女报刊的特点与产生原因分析,赵晓兰、吴潮,

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

@@ -0,0 +1 @@
+《中国出版?2013 年第5期。

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


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

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

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

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

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

@@ -0,0 +1,3 @@
+科学版
+)》2012 年第
+4 期

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

@@ -0,0 +1 @@
+《妇女杂志》与日本学者的近代女性观,杜若松、刘十《外国

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

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

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

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

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

@@ -0,0 +1 @@
+学》2012 年第5期。

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

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

+ 20 - 13
extract.py → extract_pytesseract/extract.py

@@ -17,9 +17,6 @@
 #
 #     print(text)
 
-# 写入txt文件
-# with open('output.txt', 'w' ,encoding= 'utf-8',errors='replace') as f:
-#     f.write(text)
 
 
 
@@ -62,6 +59,7 @@ import pytesseract
 from PIL import Image, ImageDraw  # 导入Pillow库和ImageDraw模块用于绘制
 
 
+
 # 将传入的 cropped_image 图像按指定高度(line_height)分割成若干行,并在图像上绘制每行的矩形框。
 def split_image_into_lines_and_mark(cropped_image, line_height):
     """
@@ -96,7 +94,10 @@ def draw_rectangle_on_pdf_image(image, outline_color="red", width=3):
     :param width: 矩形框的线条宽度,默认是3
     """
     # 设置要绘制矩形框的区域 (left, top, right, bottom)
+    # dpi为300时的参数
     crop_area = (250, 300, 1600, 2300)
+    # dpi为200时的参数
+    # crop_area = (150, 200, 1050, 1550)
     draw = ImageDraw.Draw(image)  # 创建绘图对象
     draw.rectangle(crop_area, outline=outline_color, width=width)  # 绘制矩形框
     return image
@@ -110,11 +111,14 @@ def crop_image(image):
     :return: 裁剪后的图像
     """
     # 设置要绘制矩形框的区域 (left, top, right, bottom)
+    # dpi为300时的参数
     crop_area = (250, 300, 1600, 2300)
+    # dpi为200时的参数
+    # crop_area = (150, 200, 1050, 1550)
     cropped_image = image.crop(crop_area)  # 使用crop方法裁剪
     return cropped_image
 
-# 将PDF转换为图片的函数
+# 将PDF转换为图片的函数(dpi默认值为300)
 def convert_pdf_to_images(pdf_file_path, dpi=300):
     """
     将PDF文件转换为图片
@@ -153,8 +157,8 @@ pdf_file_path = 'D:/其他/女性文学副本.pdf'
 
 
 # 使用新封装的函数将PDF转换为图片
+# pages = convert_pdf_to_images(pdf_file_path, dpi=300)
 pages = convert_pdf_to_images(pdf_file_path, dpi=300)
-
 # 在每一页图片上绘制矩形框
 for i, page in enumerate(pages):
     # 绘制矩形框
@@ -162,24 +166,27 @@ for i, page in enumerate(pages):
     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')  # 保存提取的文本
 
+    # 裁剪图像
+    cropped_page = crop_image(page)
+    cropped_page.save(f'裁剪后的页面_{i + 1}.png', 'PNG')  # 保存裁剪后的图片
+
     # 提取裁剪后图片文本并保存
     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)  # 设定每行的高度为100像素
+    # dpi为300时
+    lines, marked_image = split_image_into_lines_and_mark(cropped_page, line_height=80)  # 设定每行的高度
+    # # dpi为200时
+    # lines, marked_image = split_image_into_lines_and_mark(cropped_page, line_height=53)  # 设定每行的高度
     # 保存标记了分割区域的图片
     marked_image.save(f'按行分割后的裁剪页面_{i + 1}.png', 'PNG')  # 保存标记区域后的图片
-    # print(f"标记并保存带分割区域的裁剪图像:裁剪页面_{i + 1}_带标记.png")
-    #
+    print(f"标记并保存带分割区域的裁剪图像:裁剪页面_{i + 1}_带标记.png")
+    # #
     # 保存每一行图像
     for j, line in enumerate(lines):
         line.save(f'裁剪后页面_{i + 1}_行_{j + 1}.png', 'PNG')  # 保存每行图像

+ 0 - 0
按行分割后的裁剪页面_1.png → extract_pytesseract/按行分割后的裁剪页面_1.png


+ 0 - 0
未裁剪图片文本_1.txt → extract_pytesseract/未裁剪图片文本_1.txt


+ 0 - 0
标记后的页面_1.png → extract_pytesseract/标记后的页面_1.png


+ 0 - 0
裁剪后图片文本_1.txt → extract_pytesseract/裁剪后图片文本_1.txt


+ 0 - 0
裁剪后的页面_1.png → extract_pytesseract/裁剪后的页面_1.png


+ 0 - 0
裁剪后页面_1_行_1.png → extract_pytesseract/裁剪后页面_1_行_1.png


+ 0 - 0
裁剪后页面_1_行_10.png → extract_pytesseract/裁剪后页面_1_行_10.png


+ 0 - 0
裁剪后页面_1_行_11.png → extract_pytesseract/裁剪后页面_1_行_11.png


+ 0 - 0
裁剪后页面_1_行_12.png → extract_pytesseract/裁剪后页面_1_行_12.png


+ 0 - 0
裁剪后页面_1_行_13.png → extract_pytesseract/裁剪后页面_1_行_13.png


+ 0 - 0
裁剪后页面_1_行_14.png → extract_pytesseract/裁剪后页面_1_行_14.png


+ 0 - 0
裁剪后页面_1_行_15.png → extract_pytesseract/裁剪后页面_1_行_15.png


+ 0 - 0
裁剪后页面_1_行_16.png → extract_pytesseract/裁剪后页面_1_行_16.png


+ 0 - 0
裁剪后页面_1_行_17.png → extract_pytesseract/裁剪后页面_1_行_17.png


+ 0 - 0
裁剪后页面_1_行_18.png → extract_pytesseract/裁剪后页面_1_行_18.png


+ 0 - 0
裁剪后页面_1_行_19.png → extract_pytesseract/裁剪后页面_1_行_19.png


+ 0 - 0
裁剪后页面_1_行_2.png → extract_pytesseract/裁剪后页面_1_行_2.png


+ 0 - 0
裁剪后页面_1_行_20.png → extract_pytesseract/裁剪后页面_1_行_20.png


+ 0 - 0
裁剪后页面_1_行_21.png → extract_pytesseract/裁剪后页面_1_行_21.png


+ 0 - 0
裁剪后页面_1_行_22.png → extract_pytesseract/裁剪后页面_1_行_22.png


+ 0 - 0
裁剪后页面_1_行_23.png → extract_pytesseract/裁剪后页面_1_行_23.png


+ 0 - 0
裁剪后页面_1_行_24.png → extract_pytesseract/裁剪后页面_1_行_24.png


+ 0 - 0
裁剪后页面_1_行_25.png → extract_pytesseract/裁剪后页面_1_行_25.png


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


+ 0 - 0
裁剪后页面_1_行_3.png → extract_pytesseract/裁剪后页面_1_行_3.png


+ 0 - 0
裁剪后页面_1_行_4.png → extract_pytesseract/裁剪后页面_1_行_4.png


+ 0 - 0
裁剪后页面_1_行_5.png → extract_pytesseract/裁剪后页面_1_行_5.png


+ 0 - 0
裁剪后页面_1_行_6.png → extract_pytesseract/裁剪后页面_1_行_6.png


+ 0 - 0
裁剪后页面_1_行_7.png → extract_pytesseract/裁剪后页面_1_行_7.png


+ 0 - 0
裁剪后页面_1_行_8.png → extract_pytesseract/裁剪后页面_1_行_8.png


+ 0 - 0
裁剪后页面_1_行_9.png → extract_pytesseract/裁剪后页面_1_行_9.png


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


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


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


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


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


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


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


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


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


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