![]() Newlines are converted to underscores in final output. Hopefully, though, the PDFs you need to parse don't use Form XObjects with text in them, and so this caveat won't apply to you. You could, in principle, figure out how to piece these together into a string, but PDFMiner (as of version 20181108) can't do it for you. Although LTFigures can contain text, PDFMiner doesn't seem capable of grouping that text into LTTextBoxes (you can try yourself on the example PDF from ) and instead produces an LTFigure that directly contains LTChar objects. The code example at the beginning of this answer combined these two properties to show the coordinates of each block of text.įinally, it's worth noting that, unlike the other Stack Overflow answers cited above, I don't bother recursing into LTFigures. Note that each LTTextBox is a collection of LTChars (characters explicitly drawn by the PDF, with a bbox) and LTAnnos (extra spaces that PDFMiner adds to the string representation of the text box's content based upon the characters being drawn a long way apart these have no bbox). get_text() method, shown above, that returns their text content as a string. ![]() In addition to a bbox, LTTextBoxes also have a. mediabox: x0, y0_orig, x1, y1_orig = some_lobj.bbox If it's more convenient for you to work with the y-axis going from top to bottom instead, you can subtract them from the height of the page's. The y-coordinates are given as the distance from the bottom of the page. bbox property that holds a ( x0, y0, x1, y1) tuple containing the coordinates of the left, bottom, right, and top of the object respectively. More detail of the structure of an LTPage is shown by this image from the docs:Įach of the types above has a. (In particular, your textboxes will probably all be LTTextBoxHorizontals.) Each of these layout objects can be one of the following types. ![]() The layout object above is an LTPage, which is an iterable of "layout objects". The meaning of some of the parameters is given at since they can also be passed as arguments to pdf2text at the command line. ![]() LAParams's parameters are, like most of PDFMiner, undocumented, but you can see them in the source code or by calling help(LAParams) at your Python shell. Therefore, text extraction needs to splice text chunks. In an actual PDF file, text portions might be split into several chunks in the middle of its running, depending on the authoring software. If you're surprised that such grouping is a thing that needs to happen at all, it's justified in the pdf2txt docs: LAParams lets you set some parameters that control how individual characters in the PDF get magically grouped into lines and textboxes by PDFMiner.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |