Извлечение текста из PDF-файлов со встроенными шрифтамиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Извлечение текста из PDF-файлов со встроенными шрифтами

Сообщение Anonymous »

Мне нужно извлечь текст из PDF-файлов — кажется, это достаточно просто.
Вот моя проблема.
Когда я открываю PDF-файл в программе просмотра PDF-файлов, например Adobe Acrobat, я вижу текст как обычный текст, я могу его прочитать.
Когда я использую iText7, например, для извлечения текста, я получаю такие тексты, как этот

Код: Выделить всё

R!"ina sa$!m!js
хотя это должно быть Rēķina saņēmējs
Проблема во встроенных шрифтах, где символ ! является символом Юникода, но когда шрифт применяется он отображается как ē.
Есть идеи, как с этим справиться. Сами шрифты я пытался извлечь из pdf вот так

Код: Выделить всё

using System;
using System.IO;
using iText.IO.Source;
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

class PdfFontExtractor
{
private string pdfPath;
private string outputDir;

public PdfFontExtractor(string pdfPath, string outputDir)
{
this.pdfPath = pdfPath;
this.outputDir = outputDir;

if (!Directory.Exists(outputDir))
{
Directory.CreateDirectory(outputDir);
}
}

public void ExtractFonts()
{
using (PdfReader reader = new PdfReader(pdfPath))
{
using (PdfDocument pdfDoc = new PdfDocument(reader))
{
for (int i = 1; i  1000)
{
string fontName = fontDict.GetAsName(PdfName.BaseFont).GetValue();
fontName = fontName + ".ttf";

string fontPath = Path.Combine(outputDir, fontName);
File.WriteAllBytes(fontPath, fontData);
Console.WriteLine($"Extracted font: {fontPath}");
}
else
{
Console.WriteLine(
$"Skipped invalid font: {fontDict.GetAsName(PdfName.BaseFont).GetValue()}"
);
}
}
}
}
}
Он создает файлы, но их нельзя открыть.
Я знаю, что их можно извлечь с помощью онлайн-инструментов, таких как i2PDF
Может быть, моему коду что-то нужно.
Мой подход:
  • извлеките шрифты из pdf
  • создавайте изображения из глифов в шрифтах
  • OCR изображений и сравнивайте их с символами Юникода, которые представляют глифы
  • измените текст в возвращаемом PDF-файле на основе собранных данных
Это не единичный случай, и входящий PDF-файл имеет вариации, поэтому я хочу автоматизировать это, чтобы я мог предоставить программе PDF-файл, и она могла вернуть правильный текст.
Решение не является обязательным в С#. Python тоже может подойти.

Подробнее здесь: https://stackoverflow.com/questions/785 ... dded-fonts
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • В чем разница между переменными шрифтами и обычными шрифтами
    Anonymous » » в форуме CSS
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между переменными шрифтами и обычными шрифтами
    Anonymous » » в форуме CSS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как сделать круглую кнопку CSS со строками текста с разными шрифтами
    Anonymous » » в форуме CSS
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как сделать круглую кнопку CSS со строками текста с разными шрифтами
    Anonymous » » в форуме CSS
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как сделать круглую кнопку CSS со строками текста с разными шрифтами
    Anonymous » » в форуме CSS
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»