Как обнаружить скрытый текст в PDF с помощью iTextSharper - PullRequest
0 голосов
/ 11 марта 2020

Ниже у нас есть PDF-документ, где скрыт какой-то текст (покрытый белой рамкой). Возможно ли использовать метод iTextSharp, чтобы определить, есть ли в PDF скрытый текст или нет?

Я приложил изображение PDF со скрытым текстом и двумя способами извлечения текста из PDF

Спасибо всем заранее за вашу помощь

enter image description here

Используя iTextSharp, я могу извлечь текст двумя способами (два метода, ReadFile и ExtractText)

    public string ReadFile(string Filename)
    {
        PdfReader reader = new PdfReader(Filename);

        string pdfText = string.Empty;
        string OCRErrorPages = string.Empty;

        for (int i = 1; i <= reader.NumberOfPages; i++)
        {
            iTextSharp.text.pdf.parser.ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy();

            String extractText = iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(reader, i, its);

            extractText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(extractText)));

            if (extractText != "")
            {
                pdfText = pdfText + extractText;
            }
            else
            {
                OCRErrorPages = OCRErrorPages + i + extractText + "<br/>";
            }
        }
        reader.Close();
        if (OCRErrorPages != "")
        {
            return OCRErrorPages + " This page contains no text";
        }
        else
        {
            return pdfText;
        }

    }

    public string ExtractText(string inFileName)
    {
        string line = string.Empty;
        // Create a reader for the given PDF file
        PdfReader reader = new PdfReader(inFileName);

        int totalLen = 68;
        float charUnit = ((float)totalLen) / (float)reader.NumberOfPages;
        int totalWritten = 0;
        float curUnit = 0;

        for (int page = 1; page <= reader.NumberOfPages; page++)
        {
            line += ExtractTextFromPDFBytes(reader.GetPageContent(page)) + " ";

            var thing = reader.GetPageContent(page);

            // Write the progress.
            if (charUnit >= 1.0f)
            {
                for (int i = 0; i < (int)charUnit; i++)
                {
                    Console.Write("#");
                    totalWritten++;
                }
            }
            else
            {
                curUnit += charUnit;
                if (curUnit >= 1.0f)
                {
                    for (int i = 0; i < (int)curUnit; i++)
                    {
                        Console.Write("#");
                        totalWritten++;
                    }
                    curUnit = 0;
                }

            }
        }

        if (totalWritten < totalLen)
        {
            for (int i = 0; i < (totalLen - totalWritten); i++)
            {
                Console.Write("#");
            }
        }
        return line;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...